diff --git a/src/getvideo_main.cpp b/src/getvideo_main.cpp
deleted file mode 100644
index 849c75d..0000000
--- a/src/getvideo_main.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#include <fcntl.h>
-#include <unistd.h>
-
-#include <chrono>
-#include <cstdio>
-#include <cstdlib>
-#include <fstream>
-#include <iomanip>
-#include <iostream>
-#include <thread>
-#include <vector>
-
-//#define BUILD_CIMG
-#ifdef BUILD_CIMG
-#define cimg_display 0
-#include <CImg.h>
-#endif
-
-#include <ast_jpeg_decoder.hpp>
-#include <ast_video_puller.hpp>
-
-int main()
-{
-    ast_video::RawVideoBuffer out;
-    bool have_hardware = false;
-    if (access("/dev/video", F_OK) != -1)
-    {
-        ast_video::SimpleVideoPuller p;
-        p.initialize();
-        out = p.readVideo();
-    }
-    else
-    {
-        FILE *fp = fopen("/home/ed/screendata.bin", "rb");
-        if (fp != nullptr)
-        {
-            size_t newLen = fread(out.buffer.data(), sizeof(char),
-                                  out.buffer.size() * sizeof(long), fp);
-            if (ferror(fp) != 0)
-            {
-                fputs("Error reading file", stderr);
-            }
-            fclose(fp);
-            out.buffer.resize(newLen);
-            out.mode = ast_video::YuvMode::YUV444;
-            out.width = 800;
-            out.height = 600;
-            out.ySelector = 0;
-            out.uvSelector = 0;
-        }
-    }
-
-    FILE *fp = fopen("/tmp/screendata.bin", "wb");
-    fwrite(out.buffer.data(), sizeof(char), out.buffer.size(), fp);
-    fclose(fp);
-
-    ast_video::AstJpegDecoder d;
-    d.decode(out.buffer, out.width, out.height, out.mode, out.ySelector,
-             out.uvSelector);
-#ifdef BUILD_CIMG
-    cimg_library::CImg<unsigned char> image(out.width, out.height, 1,
-                                            3 /*numchannels*/);
-    for (int y = 0; y < out.height; y++)
-    {
-        for (int x = 0; x < out.width; x++)
-        {
-            auto pixel = d.outBuffer[x + (y * out.width)];
-            image(x, y, 0) = pixel.r;
-            image(x, y, 1) = pixel.g;
-            image(x, y, 2) = pixel.b;
-        }
-    }
-    image.save("/tmp/file2.bmp");
-#endif
-
-    std::cout << "Done!\n";
-
-    return 1;
-}
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index 7c64f4c..b357b4e 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -5,6 +5,7 @@
 #include <dbus_monitor.hpp>
 #include <dbus_singleton.hpp>
 #include <image_upload.hpp>
+#include <kvm_websocket.hpp>
 #include <memory>
 #include <obmc_console.hpp>
 #include <openbmc_dbus_rest.hpp>
@@ -18,7 +19,6 @@
 #include <ssl_key_handler.hpp>
 #include <string>
 #include <token_authorization_middleware.hpp>
-#include <web_kvm.hpp>
 #include <webassets.hpp>
 #include <webserver_common.hpp>
 
@@ -77,7 +77,7 @@
 #endif
 
 #ifdef BMCWEB_ENABLE_KVM
-    crow::kvm::requestRoutes(app);
+    crow::obmc_kvm::requestRoutes(app);
 #endif
 
 #ifdef BMCWEB_ENABLE_REDFISH
