diff --git a/include/InternalMode.h b/include/InternalMode.h
new file mode 100644
index 0000000..1a75b91
--- /dev/null
+++ b/include/InternalMode.h
@@ -0,0 +1,26 @@
+#include "regs-video.h"
+
+INTERNAL_MODE Internal_Mode[] = {
+// 1024x768
+  {1024, 768, 0, 65.000},
+  {1024, 768, 1, 65.000},
+  {1024, 768, 2, 75.000},
+  {1024, 768, 3, 78.750},
+  {1024, 768, 4, 94.500},
+// 1280x1024
+  {1280, 1024, 0, 108.000},
+  {1280, 1024, 1, 108.000},
+  {1280, 1024, 2, 135.000},
+  {1280, 1024, 3, 157.500},      
+// 1600x1200
+  {1600, 1200, 0, 162.000},
+  {1600, 1200, 1, 162.000},
+  {1600, 1200, 2, 175.500},
+  {1600, 1200, 3, 189.000},
+  {1600, 1200, 4, 202.500},
+  {1600, 1200, 5, 229.500},
+// 1920x1200 reduce blank
+  {1920, 1200, 0, 157.000},
+  {1920, 1200, 1, 157.000},
+};
+uint16_t  InternalEnhanceModeNumberCount = sizeof (Internal_Mode) / sizeof (INTERNAL_MODE);
diff --git a/include/app_type.hpp b/include/app_type.hpp
new file mode 100644
index 0000000..e88d728
--- /dev/null
+++ b/include/app_type.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+#include <crow/app.h>
+#include <token_authorization_middleware.hpp>
+
+using BmcAppType = crow::App<crow::TokenAuthorizationMiddleware>;
\ No newline at end of file
diff --git a/include/ioaccess.h b/include/ioaccess.h
new file mode 100644
index 0000000..98bb63d
--- /dev/null
+++ b/include/ioaccess.h
@@ -0,0 +1,32 @@
+#define  IOCTL_IO_READ    0x1103
+#define  IOCTL_IO_WRITE   0x1104
+#define  IOCTL_REAL_IO_READ    0x1106
+#define  IOCTL_REAL_IO_WRITE   0x1107
+#define  IOCTL_BIT_STREAM_BASE 0x1108
+#define  IOCTL_TX_BIT_STREAM   0x1109
+#define  IOCTL_GET_SOCKET      0x1110
+#define  IOCTL_AUTOMODE_TRIGGER         0x1111
+#define  IOCTL_PASS3_TRIGGER   0x1112
+#define  IOCTL_I2C_READ        0x1113
+#define  IOCTL_I2C_WRITE       0x1114
+#define  IOCTL_FLAG_BUFFER_CLEAR       0x1115
+#define  IOCTL_REMAP      0x1105
+#define  RELOCATE_OFFSET  0x380
+
+typedef struct _IO_ACCESS_DATA {
+    unsigned char Type;
+    unsigned long Address;
+    unsigned long Data;
+    unsigned long Value;
+    unsigned long I2CValue;
+    int      kernel_socket;
+//    struct sockaddr_in address_svr;
+} IO_ACCESS_DATA, *PIO_ACCESS_DATA;
+/*
+typedef struct _MAP_DATA {
+    unsigned long virt_add;
+    unsigned long phys_add;
+    unsigned long size;
+    pgprot_t      prot;
+} MAP_DATA;
+*/
diff --git a/include/regs-video.h b/include/regs-video.h
new file mode 100644
index 0000000..379fa9c
--- /dev/null
+++ b/include/regs-video.h
@@ -0,0 +1,264 @@
+#pragma once
+
+
+#define PASS 0
+#define TRUE 0
+#define FALSE 1
+#define FAIL 1
+#define FIX 0
+#define STEP 1
+#define SEQ_ADDRESS_REGISTER 0x3C4
+#define SEQ_DATA_REGISTER 0x3C5
+#define CRTC_ADDRESS_REGISTER 0x3D4
+#define CRTC_DATA_REGISTER 0x3D5
+#define DAC_INDEX_REGISTER 0x3C8
+#define DAC_DATA_REGISTER 0x3C9
+
+#define VIDEOBASE_OFFSET 0x1E700000
+#define KEY_CONTROL 0x00 + VIDEOBASE_OFFSET
+#define VIDEOENGINE_SEQUENCE_CONTROL 0x04 + VIDEOBASE_OFFSET
+#define VIDEOENGINE_PASS1_CONTROL 0x08 + VIDEOBASE_OFFSET
+#define VIDEOENGINE_MODEDETECTIONSETTING_H 0x0C + VIDEOBASE_OFFSET
+#define VIDEOENGINE_MODEDETECTIONSETTING_V 0x10 + VIDEOBASE_OFFSET
+#define SCALE_FACTOR_REGISTER 0x14 + VIDEOBASE_OFFSET
+#define SCALING_FILTER_PARAMETERS_1 0x18 + VIDEOBASE_OFFSET
+#define SCALING_FILTER_PARAMETERS_2 0x1C + VIDEOBASE_OFFSET
+#define SCALING_FILTER_PARAMETERS_3 0x20 + VIDEOBASE_OFFSET
+#define SCALING_FILTER_PARAMETERS_4 0x24 + VIDEOBASE_OFFSET
+#define MODEDETECTION_STATUS_READBACK 0x98 + VIDEOBASE_OFFSET
+#define VIDEOPROCESSING_CONTROL 0x2C + VIDEOBASE_OFFSET
+#define VIDEO_CAPTURE_WINDOW_SETTING 0x30 + VIDEOBASE_OFFSET
+#define VIDEO_COMPRESS_WINDOW_SETTING 0x34 + VIDEOBASE_OFFSET
+#define VIDEO_COMPRESS_READ 0x3C + VIDEOBASE_OFFSET
+#define VIDEO_IN_BUFFER_BASEADDRESS 0x44 + VIDEOBASE_OFFSET
+#define VIDEO_IN_BUFFER_OFFSET 0x48 + VIDEOBASE_OFFSET
+#define VIDEOPROCESS_BUFFER_BASEADDRESS 0x4C + VIDEOBASE_OFFSET
+#define VIDEOCOMPRESS_SOURCE_BUFFER_BASEADDRESS 0x44 + VIDEOBASE_OFFSET
+#define VIDEOPROCESS_OFFSET 0x48 + VIDEOBASE_OFFSET
+#define VIDEOPROCESS_REFERENCE_BUFFER_BASEADDRESS 0x4C + VIDEOBASE_OFFSET
+#define FLAG_BUFFER_BASEADDRESS 0x50 + VIDEOBASE_OFFSET
+#define VIDEO_COMPRESS_DESTINATION_BASEADDRESS 0x54 + VIDEOBASE_OFFSET
+#define STREAM_BUFFER_SIZE_REGISTER 0x58 + VIDEOBASE_OFFSET
+#define VIDEO_CAPTURE_BOUND_REGISTER 0x5C + VIDEOBASE_OFFSET
+#define VIDEO_COMPRESS_CONTROL 0x60 + VIDEOBASE_OFFSET
+#define VIDEO_QUANTIZATION_TABLE_REGISTER 0x64 + VIDEOBASE_OFFSET
+#define BLOCK_SHARPNESS_DETECTION_CONTROL 0x6C + VIDEOBASE_OFFSET
+#define POST_WRITE_BUFFER_DRAM_THRESHOLD 0x68 + VIDEOBASE_OFFSET
+#define DETECTION_STATUS_REGISTER 0x98 + VIDEOBASE_OFFSET
+#define H_DETECTION_STATUS 0x90 + VIDEOBASE_OFFSET
+#define V_DETECTION_STATUS 0x94 + VIDEOBASE_OFFSET
+#define VIDEO_CONTROL_REGISTER 0x300 + VIDEOBASE_OFFSET
+#define VIDEO_INTERRUPT_CONTROL 0x304 + VIDEOBASE_OFFSET
+#define VIDEO_INTERRUPT_STATUS 0x308 + VIDEOBASE_OFFSET
+#define MODE_DETECTION_REGISTER 0x30C + VIDEOBASE_OFFSET
+
+#define FRONT_BOUND_REGISTER 0x310 + VIDEOBASE_OFFSET
+#define END_BOUND_REGISTER 0x314 + VIDEOBASE_OFFSET
+#define CRC_1_REGISTER 0x320 + VIDEOBASE_OFFSET
+#define CRC_2_REGISTER 0x324 + VIDEOBASE_OFFSET
+#define REDUCE_BIT_REGISTER 0x328 + VIDEOBASE_OFFSET
+#define BIOS_SCRATCH_REGISTER 0x34C + VIDEOBASE_OFFSET
+#define COMPRESS_DATA_COUNT_REGISTER 0x70 + VIDEOBASE_OFFSET
+#define COMPRESS_BLOCK_COUNT_REGISTER 0x74 + VIDEOBASE_OFFSET
+#define VIDEO_SCRATCH_REGISTER_34C 0x34C + VIDEOBASE_OFFSET
+#define VIDEO_SCRATCH_REGISTER_35C 0x35C + VIDEOBASE_OFFSET
+#define RC4KEYS_REGISTER 0x400 + VIDEOBASE_OFFSET
+#define VQHUFFMAN_TABLE_REGISTER 0x300 + VIDEOBASE_OFFSET
+
+//  Parameters
+#define SAMPLE_RATE 24000000.0
+#define MODEDETECTION_VERTICAL_STABLE_MAXIMUM 0x6
+#define MODEDETECTION_HORIZONTAL_STABLE_MAXIMUM 0x6
+#define MODEDETECTION_VERTICAL_STABLE_THRESHOLD 0x2
+#define MODEDETECTION_HORIZONTAL_STABLE_THRESHOLD 0x2
+#define HORIZONTAL_SCALING_FILTER_PARAMETERS_LOW 0xFFFFFFFF
+#define HORIZONTAL_SCALING_FILTER_PARAMETERS_HIGH 0xFFFFFFFF
+#define VIDEO_WRITE_BACK_BUFFER_THRESHOLD_LOW 0x08
+#define VIDEO_WRITE_BACK_BUFFER_THRESHOLD_HIGH 0x04
+#define VQ_Y_LEVELS 0x10
+#define VQ_UV_LEVELS 0x05
+#define EXTERNAL_VIDEO_HSYNC_POLARITY 0x01
+#define EXTERNAL_VIDEO_VSYNC_POLARITY 0x01
+#define VIDEO_SOURCE_FROM 0x01
+#define EXTERNAL_ANALOG_SOURCE 0x01
+#define USE_intERNAL_TIMING_GENERATOR 0x01
+#define WRITE_DATA_FORMAT 0x00
+#define SET_BCD_TO_WHOLE_FRAME 0x01
+#define ENABLE_VERTICAL_DOWN_SCALING 0x01
+#define BCD_TOLERENCE 0xFF
+#define BCD_START_BLOCK_XY 0x0
+#define BCD_END_BLOCK_XY 0x3FFF
+#define COLOR_DEPTH 16
+#define BLOCK_SHARPNESS_DETECTION_HIGH_THRESHOLD 0xFF
+#define BLOCK_SHARPNESS_DETECTION_LOE_THRESHOLD 0xFF
+#define BLOCK_SHARPNESS_DETECTION_HIGH_COUNTS_THRESHOLD 0x3F
+#define BLOCK_SHARPNESS_DETECTION_LOW_COUNTS_THRESHOLD 0x1F
+#define VQTABLE_AUTO_GENERATE_BY_HARDWARE 0x0
+#define VQTABLE_SELECTION 0x0
+#define JPEG_COMPRESS_ONLY 0x0
+#define DUAL_MODE_COMPRESS 0x1
+#define BSD_H_AND_V 0x0
+#define ENABLE_RC4_ENCRYPTION 0x1
+#define BSD_ENABLE_HIGH_THRESHOLD_CHECK 0x0
+#define VIDEO_PROCESS_AUTO_TRIGGER 0x0
+#define VIDEO_COMPRESS_AUTO_TRIGGER 0x0
+#define DIGITAL_SIGNAL 0x0
+#define ANALOG_SIGNAL 0x1
+
+/* AST_VIDEO_SCRATCH_35C	0x35C		Video Scratch Remap Read Back */
+#define SCRATCH_VGA_PWR_STS_HSYNC (1 << 31)
+#define SCRATCH_VGA_PWR_STS_VSYNC (1 << 30)
+#define SCRATCH_VGA_ATTRIBTE_INDEX_BIT5 (1 << 29)
+#define SCRATCH_VGA_MASK_REG (1 << 28)
+#define SCRATCH_VGA_CRT_RST (1 << 27)
+#define SCRATCH_VGA_SCREEN_OFF (1 << 26)
+#define SCRATCH_VGA_RESET (1 << 25)
+#define SCRATCH_VGA_ENABLE (1 << 24)
+
+typedef struct _VIDEO_MODE_INFO {
+  unsigned short X;
+  unsigned short Y;
+  unsigned short ColorDepth;
+  unsigned short RefreshRate;
+  unsigned char ModeIndex;
+} VIDEO_MODE_INFO, *PVIDEO_MODE_INFO;
+
+typedef struct _VQ_INFO {
+  unsigned char Y[16];
+  unsigned char U[32];
+  unsigned char V[32];
+  unsigned char NumberOfY;
+  unsigned char NumberOfUV;
+  unsigned char NumberOfInner;
+  unsigned char NumberOfOuter;
+} VQ_INFO, *PVQ_INFO;
+
+typedef struct _HUFFMAN_TABLE {
+  unsigned long HuffmanCode[32];
+} HUFFMAN_TABLE, *PHUFFMAN_TABLE;
+
+typedef struct _FRAME_HEADER {
+  unsigned long StartCode;   // 0
+  unsigned long FrameNumber; /// 4
+  unsigned short HSize;      // 8
+  unsigned short VSize;
+  unsigned long Reserved[2];         // 12 13 14
+  unsigned char DirectMode;          // 15
+  unsigned char CompressionMode;     // 15
+  unsigned char JPEGScaleFactor;     // 16
+  unsigned char Y_JPEGTableSelector; // 18 [[[[
+  unsigned char JPEGYUVTableMapping;
+  unsigned char SharpModeSelection;
+  unsigned char AdvanceTableSelector;
+  unsigned char AdvanceScaleFactor;
+  unsigned long NumberOfMB;
+  unsigned char VQ_YLevel;
+  unsigned char VQ_UVLevel;
+  VQ_INFO VQVectors;
+  unsigned char Mode420;
+  unsigned char Visual_Lossless;
+} FRAME_HEADER, *PFRAME_HEADER;
+
+typedef struct _INF_DATA {
+  unsigned char AST2500;
+  unsigned char Input_Signale; // 0: internel vga, 1, ext digital, 2, ext analog
+  unsigned char Trigger_Mode;  // 0: capture, 1, ext digital, 2, ext analog
+  unsigned char DownScalingEnable;
+  unsigned char DifferentialSetting;
+  unsigned short AnalogDifferentialThreshold;
+  unsigned short DigitalDifferentialThreshold;
+  unsigned char AutoMode;
+  unsigned char DirectMode; // 0: force sync mode 1: auto direct mode
+  unsigned short DelayControl;
+  unsigned char VQMode;
+  unsigned char JPEG_FILE;
+} INF_DATA, *PINF_DATA;
+
+typedef struct _COMPRESS_DATA {
+  unsigned long SourceFrameSize;
+  unsigned long CompressSize;
+  unsigned long HDebug;
+  unsigned long VDebug;
+} COMPRESS_DATA, *PCOMPRESS_DATA;
+
+// VIDEO Engine Info
+typedef struct _VIDEO_ENGINE_INFO {
+  INF_DATA INFData;
+  VIDEO_MODE_INFO SourceModeInfo;
+  VIDEO_MODE_INFO DestinationModeInfo;
+  VQ_INFO VQInfo;
+  FRAME_HEADER FrameHeader;
+  COMPRESS_DATA CompressData;
+  unsigned char ChipVersion;
+  unsigned char NoSignal;
+} VIDEO_ENGINE_INFO, *PVIDEO_ENGINE_INFO;
+
+typedef struct {
+  unsigned short HorizontalActive;
+  unsigned short VerticalActive;
+  unsigned short RefreshRate;
+  unsigned char ADCIndex1;
+  unsigned char ADCIndex2;
+  unsigned char ADCIndex3;
+  unsigned char ADCIndex5;
+  unsigned char ADCIndex6;
+  unsigned char ADCIndex7;
+  unsigned char ADCIndex8;
+  unsigned char ADCIndex9;
+  unsigned char ADCIndexA;
+  unsigned char ADCIndexF;
+  unsigned char ADCIndex15;
+  int HorizontalShift;
+  int VerticalShift;
+} ADC_MODE;
+
+typedef struct {
+  unsigned short HorizontalTotal;
+  unsigned short VerticalTotal;
+  unsigned short HorizontalActive;
+  unsigned short VerticalActive;
+  unsigned char RefreshRate;
+  double HorizontalFrequency;
+  unsigned short HSyncTime;
+  unsigned short HBackPorch;
+  unsigned short VSyncTime;
+  unsigned short VBackPorch;
+  unsigned short HLeftBorder;
+  unsigned short HRightBorder;
+  unsigned short VBottomBorder;
+  unsigned short VTopBorder;
+  ADC_MODE AdcMode;
+} VESA_MODE;
+
+
+
+typedef struct {
+  unsigned short HorizontalActive;
+  unsigned short VerticalActive;
+  unsigned short RefreshRateIndex;
+  double PixelClock;
+} INTERNAL_MODE;
+
+typedef struct _TRANSFER_HEADER {
+  unsigned long Data_Length;
+  unsigned long Blocks_Changed;
+  unsigned short User_Width;
+  unsigned short User_Height;
+  unsigned char Frist_frame;   // 1: first frame
+  unsigned char Compress_type; // 0:aspeed mode, 1:jpeg mode
+  unsigned char Trigger_mode;  // 0:capture, 1: compression, 2: buffer
+  unsigned char Data_format;   // 0:DCT, 1:DCTwVQ2 color, 2:DCTwVQ4 color
+  unsigned char RC4_Enable;
+  unsigned char RC4_Reset; // no use
+  unsigned char Y_Table;
+  unsigned char UV_Table;
+  unsigned char Mode_420;
+  unsigned char Direct_Mode;
+  unsigned char VQ_Mode;
+  unsigned char Disable_VGA;
+  unsigned char Differential_Enable;
+  unsigned char Auto_Mode;
+  unsigned char VGA_Status;
+  unsigned char RC4State;
+  unsigned char Advance_Table;
+} TRANSFER_HEADER, *PTRANSFER_HEADER;
diff --git a/include/ssl_key_handler.hpp b/include/ssl_key_handler.hpp
index 6e09cbe..d53c239 100644
--- a/include/ssl_key_handler.hpp
+++ b/include/ssl_key_handler.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <random>
+
 #include <openssl/bio.h>
 #include <openssl/dh.h>
 #include <openssl/dsa.h>
@@ -22,7 +24,6 @@
 static EVP_PKEY *create_ec_key(void);
 static void handle_openssl_error(void);
 
-
 inline bool verify_openssl_key_cert(const std::string &filepath) {
   bool private_key_valid = false;
   bool cert_valid = false;
@@ -40,9 +41,9 @@
         case EVP_PKEY_RSA2: {
           LOG(DEBUG) << "Found an RSA key";
           RSA *rsa = EVP_PKEY_get1_RSA(pkey);
-          if (rsa){
+          if (rsa) {
             if (RSA_check_key(rsa) == 1) {
-              //private_key_valid = true;
+              // private_key_valid = true;
             } else {
               LOG(WARNING) << "Key not valid error number " << ERR_get_error();
             }
@@ -50,10 +51,10 @@
           }
           break;
         }
-        case EVP_PKEY_EC:{
+        case EVP_PKEY_EC: {
           LOG(DEBUG) << "Found an EC key";
-          EC_KEY* ec = EVP_PKEY_get1_EC_KEY(pkey);
-          if (ec){
+          EC_KEY *ec = EVP_PKEY_get1_EC_KEY(pkey);
+          if (ec) {
             if (EC_KEY_check_key(ec) == 1) {
               private_key_valid = true;
             } else {
@@ -70,14 +71,15 @@
 
       if (private_key_valid) {
         X509 *x509 = PEM_read_X509(file, NULL, NULL, NULL);
-        if (!x509){
+        if (!x509) {
           LOG(DEBUG) << "error getting x509 cert " << ERR_get_error();
         } else {
           rc = X509_verify(x509, pkey);
           if (rc == 1) {
             cert_valid = true;
           } else {
-             LOG(WARNING) << "Error in verifying private key signature " << ERR_get_error();
+            LOG(WARNING) << "Error in verifying private key signature "
+                         << ERR_get_error();
           }
         }
       }
@@ -94,64 +96,65 @@
   LOG(WARNING) << "Generating new keys";
   init_openssl();
 
-  //LOG(WARNING) << "Generating RSA key";
-  //EVP_PKEY *pRsaPrivKey = create_rsa_key();
+  // LOG(WARNING) << "Generating RSA key";
+  // EVP_PKEY *pRsaPrivKey = create_rsa_key();
 
   LOG(WARNING) << "Generating EC key";
   EVP_PKEY *pRsaPrivKey = create_ec_key();
+  if (pRsaPrivKey) {
+    LOG(WARNING) << "Generating x509 Certificate";
+    // Use this code to directly generate a certificate
+    X509 *x509;
+    x509 = X509_new();
+    if (x509) {
+      // Get a random number from the RNG for the certificate serial number
+      // If this is not random, regenerating certs throws broswer errors
+      std::random_device rd;
+      int serial = rd();
 
-  LOG(WARNING) << "Generating x509 Certificate";
-  // Use this code to directly generate a certificate
-  X509 *x509;
-  x509 = X509_new();
-  if (x509) {
+      ASN1_INTEGER_set(X509_get_serialNumber(x509), serial);
 
-    // Get a random number from the RNG for the certificate serial number
-    // If this is not random, regenerating certs throws broswer errors
-    std::random_device rd;
-    int serial = rd();
+      // not before this moment
+      X509_gmtime_adj(X509_get_notBefore(x509), 0);
+      // Cert is valid for 10 years
+      X509_gmtime_adj(X509_get_notAfter(x509), 60L * 60L * 24L * 365L * 10L);
 
-    ASN1_INTEGER_set(X509_get_serialNumber(x509), serial);
+      // set the public key to the key we just generated
+      X509_set_pubkey(x509, pRsaPrivKey);
 
-    // not before this moment
-    X509_gmtime_adj(X509_get_notBefore(x509), 0);
-    // Cert is valid for 10 years
-    X509_gmtime_adj(X509_get_notAfter(x509), 60L * 60L * 24L * 365L * 10L);
+      // Get the subject name
+      X509_NAME *name;
+      name = X509_get_subject_name(x509);
 
-    // set the public key to the key we just generated
-    X509_set_pubkey(x509, pRsaPrivKey);
+      X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, (unsigned char *)"US",
+                                -1, -1, 0);
+      X509_NAME_add_entry_by_txt(name, "O", MBSTRING_ASC,
+                                (unsigned char *)"Intel BMC", -1, -1, 0);
+      X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC,
+                                (unsigned char *)"testhost", -1, -1, 0);
+      // set the CSR options
+      X509_set_issuer_name(x509, name);
 
-    // Get the subject name
-    X509_NAME *name;
-    name = X509_get_subject_name(x509);
+      // Sign the certificate with our private key
+      X509_sign(x509, pRsaPrivKey, EVP_sha256());
 
-    X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, (unsigned char *)"US", -1, -1, 0);
-    X509_NAME_add_entry_by_txt(name, "O", MBSTRING_ASC, (unsigned char *)"Intel BMC", -1, -1, 0);
-    X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char *)"testhost", -1, -1, 0);
-    // set the CSR options
-    X509_set_issuer_name(x509, name);
+      pFile = fopen(filepath.c_str(), "wt");
 
-    // Sign the certificate with our private key
-    X509_sign(x509, pRsaPrivKey, EVP_sha256());
+      if (pFile) {
+        PEM_write_PrivateKey(pFile, pRsaPrivKey, NULL, NULL, 0, 0, NULL);
 
-    pFile = fopen(filepath.c_str(), "wt");
+        PEM_write_X509(pFile, x509);
+        fclose(pFile);
+        pFile = NULL;
+      }
 
-    if (pFile) {
-      PEM_write_PrivateKey(pFile, pRsaPrivKey, NULL, NULL, 0, 0, NULL);
-      
-      PEM_write_X509(pFile, x509);
-      fclose(pFile);
-      pFile = NULL;
+      X509_free(x509);
     }
 
-    X509_free(x509);
-  }
-
-  if (pRsaPrivKey) {
     EVP_PKEY_free(pRsaPrivKey);
     pRsaPrivKey = NULL;
   }
-  
+
   // cleanup_openssl();
 }
 
@@ -183,35 +186,27 @@
 }
 
 EVP_PKEY *create_ec_key(void) {
-  EC_KEY *myecc = NULL;
   EVP_PKEY *pKey = NULL;
   int eccgrp = 0;
   eccgrp = OBJ_txt2nid("prime256v1");
 
-  // TODO handle errors
-  myecc = EC_KEY_new_by_curve_name(eccgrp);
-  EC_KEY_set_asn1_flag(myecc, OPENSSL_EC_NAMED_CURVE);
-  EC_KEY_generate_key(myecc);
-  pKey = EVP_PKEY_new();
-
-  if (myecc && pKey && EVP_PKEY_assign_EC_KEY(pKey, myecc)) {
-    /* pKey owns pRSA from now */
-    if (EC_KEY_check_key(myecc) <= 0) {
-      fprintf(stderr, "EC_check_key failed.\n");
-      handle_openssl_error();
-      EVP_PKEY_free(pKey);
-      pKey = NULL;
-    }
-  } else {
-    handle_openssl_error();
-    if (myecc) {
-      EC_KEY_free(myecc);
-      myecc = NULL;
-    }
+  EC_KEY *myecc = EC_KEY_new_by_curve_name(eccgrp);
+  if (myecc) {
+    EC_KEY_set_asn1_flag(myecc, OPENSSL_EC_NAMED_CURVE);
+    EC_KEY_generate_key(myecc);
+    EVP_PKEY *pKey = EVP_PKEY_new();
     if (pKey) {
+      if (EVP_PKEY_assign_EC_KEY(pKey, myecc)) {
+        /* pKey owns pRSA from now */
+        if (EC_KEY_check_key(myecc) <= 0) {
+          fprintf(stderr, "EC_check_key failed.\n");
+        }
+      }
       EVP_PKEY_free(pKey);
       pKey = NULL;
     }
+    EC_KEY_free(myecc);
+    myecc = NULL;
   }
   return pKey;
 }
@@ -237,25 +232,31 @@
   bool pem_file_valid = false;
 
   pem_file_valid = verify_openssl_key_cert(filepath);
-  
+
   if (!pem_file_valid) {
     LOG(WARNING) << "Error in verifying signature, regenerating";
     generate_ssl_certificate(filepath);
   }
 }
 
-
-boost::asio::ssl::context get_ssl_context(std::string ssl_pem_file){
+boost::asio::ssl::context get_ssl_context(std::string ssl_pem_file) {
   boost::asio::ssl::context m_ssl_context{boost::asio::ssl::context::sslv23};
-  m_ssl_context.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context::no_sslv2 | boost::asio::ssl::context::no_sslv3 |
-                            boost::asio::ssl::context::single_dh_use | boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1);
+  m_ssl_context.set_options(boost::asio::ssl::context::default_workarounds |
+                            boost::asio::ssl::context::no_sslv2 |
+                            boost::asio::ssl::context::no_sslv3 |
+                            boost::asio::ssl::context::single_dh_use |
+                            boost::asio::ssl::context::no_tlsv1 |
+                            boost::asio::ssl::context::no_tlsv1_1);
 
   // m_ssl_context.set_verify_mode(boost::asio::ssl::verify_peer);
-  m_ssl_context.use_certificate_file(ssl_pem_file, boost::asio::ssl::context::pem);
-  m_ssl_context.use_private_key_file(ssl_pem_file, boost::asio::ssl::context::pem);
+  m_ssl_context.use_certificate_file(ssl_pem_file,
+                                     boost::asio::ssl::context::pem);
+  m_ssl_context.use_private_key_file(ssl_pem_file,
+                                     boost::asio::ssl::context::pem);
 
   // Set up EC curves to auto (boost asio doesn't have a method for this)
-  // There is a pull request to add this.  Once this is included in an asio drop, use the right way
+  // There is a pull request to add this.  Once this is included in an asio
+  // drop, use the right way
   // http://stackoverflow.com/questions/18929049/boost-asio-with-ecdsa-certificate-issue
   if (SSL_CTX_set_ecdh_auto(m_ssl_context.native_handle(), 1) != 1) {
     CROW_LOG_ERROR << "Error setting tmp ecdh list\n";
@@ -310,7 +311,8 @@
 
   std::string lighttp_ciphers = "AES128+EECDH:AES128+EDH:!aNULL:!eNULL";
 
-  if (SSL_CTX_set_cipher_list(m_ssl_context.native_handle(), ciphers.c_str()) != 1) {
+  if (SSL_CTX_set_cipher_list(m_ssl_context.native_handle(), ciphers.c_str()) !=
+      1) {
     CROW_LOG_ERROR << "Error setting cipher list\n";
   }
   return m_ssl_context;
diff --git a/include/vesa.hpp b/include/vesa.hpp
new file mode 100644
index 0000000..a9de246
--- /dev/null
+++ b/include/vesa.hpp
@@ -0,0 +1,59 @@
+//  Note: Modified for modes which have border issue
+
+std::array<VESA_MODE, 38> ModeTable{
+    {////////////////////////// 60Hz mode
+     // 720x480 done
+     {1056, 497, 720, 480, 60, 29.900, 88, 104, 3, 13, 0, 0, 0, 0, {720,480,60,	0x41,	0xF0,	0x48,	0x05,	0x20,	0x58,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	2}},
+     // 848x480 done
+     {1064, 517, 848, 480, 60, 31.160, 88, 91, 3, 26, 0, 0, 0, 0, {848,480,60,	0x42,	0x70,	0x48,	0x05,	0x20,	0x58,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	2}},
+     {800, 525, 640, 480, 60, 31.469, 96, 40, 2, 25, 8, 8, 8, 8, {640,480,60,	0x31,	0xF0,	0x48,	0x05,	0x20,	0x60,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	2}},
+     // 720x576
+     {912, 597, 720, 576, 60, 35.920, 72, 88, 3, 17, 0, 0, 0, 0, {720,576,60,	0x38,	0xF0,	0x48,	0x05,	0x20,	0x48,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	2}},
+     // 960x600 GTF done
+     {1232, 622, 960, 600, 60, 37.320, 96, 136, 3, 18, 0, 0, 0, 0, {960,600,60,	0x4C,	0xF0,	0x60,	0x05,	0x20,	0x60,	0x60,	0x60,	0x60,	0x5E,	0xFE,   -1,	0}},
+     {1056, 628, 800, 600, 60, 37.879, 128, 88, 4, 23, 0, 0, 0, 0, {800,600,60,	0x41,	0xF0,	0x60,	0x05,	0x20,	0x80,	0x60,	0x60,	0x60,	0x5E,	0xFE,   -1,	0}},
+     // 1088x612 GTF done
+     {1392, 634, 1088, 612, 60, 38.04, 112, 152, 3, 18, 0, 0, 0, 0, {1088,612,60,   0x56,   0xF0,   0x60,   0x05,   0x20,   0x70,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     // 1280x720 GTF done
+     {1664, 746, 1280, 720, 60, 44.760, 136, 192, 3, 22, 0, 0, 0, 0, {1280,720,60,   0x67,   0xF0,   0xA8,   0x05,   0x20,   0x88,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     // 1360x768 GTF done
+     {1776, 795, 1360, 768, 60, 47.700, 144, 208, 3, 23, 0, 0, 0, 0, {1360,768,60,   0x6E,   0xF0,   0xA8,   0x05,   0x20,   0x90,   0x60,   0x60,   0x60,   0x5E,   0xFE,    7, 1}},
+     // 1280x768 done
+     {1664, 798, 1280, 768, 60, 47.700, 128, 184, 7, 20, 0, 0, 0, 0, {1280,768,60,   0x67,   0xF0,   0xA8,   0x05,   0x20,   0x80,   0x60,   0x60,   0x60,   0x5E,   0xFE,    7, 1}},
+     {1344, 806, 1024, 768, 60, 48.363, 136, 160, 6, 29, 0, 0, 0, 0, {1024,768,60,	0x53,	0xF0,	0xA8,	0x05,	0x20,	0x88,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	7}},
+     // 1280x800 GTF done
+     {1680, 828, 1280, 800, 60, 49.680, 136, 200, 3, 24, 0, 0, 0, 0, {1280,800,60,   0x68,   0xF0,   0xA8,   0x05,   0x20,   0x88,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     // 1152x864 GTF done
+     {1520, 895, 1152, 864, 60, 53.700, 120, 184, 3, 27, 0, 0, 0, 0, {1152,864,60,   0x5E,   0xF0,   0xA8,   0x05,   0x20,   0x78,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     // 1600x900 GTF done
+     {2128, 932, 1600, 900, 60, 55.920, 168, 264, 3, 28, 0, 0, 0, 0, {1600,900,60,   0x84,   0xF0,   0xA8,   0x05,   0x20,   0xA8,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     {1800, 1000, 1280, 960, 60, 60.000, 112, 312, 3, 36, 0, 0, 0, 0, {1280,960,60,   0x70,   0x70,   0xA8,   0x05,   0x20,   0x70,   0x60,   0x60,   0x60,   0x5E,   0xFE,   -1, 0}},
+     // 1600x1024 GTF done
+     {2144, 1060, 1600, 1024, 60, 63.600, 168, 272, 3, 32, 0, 0, 0, 0, {1600,1024,60,	0x85,	0xF0,	0xE8,	0x05,	0x20,	0xA8,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1688, 1066, 1280, 1024, 60, 63.981, 112, 248, 3, 38, 0, 0, 0, 0, {1280,1024,60,	0x69,	0x70,	0xA8,	0x05,	0x20,	0x70,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {2160, 1250, 1600, 1200, 60, 75.000, 192, 304, 3, 46, 0, 0, 0, 0, {1600,1200,60,	0x86,	0xF0,	0xE8,	0x05,	0x20,	0xC0,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     //////////////////////  Not 60Hz mode
+     {900, 449, 720, 400, 70, 31.469, 108, 45, 2, 25, 8, 8, 8, 8, {720,400,70,	0x38,	0x30,	0x48,	0x05,	0x20,	0x6C,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	1}},
+     {832, 520, 640, 480, 72, 37.861, 40, 120, 3, 20, 8, 8, 8, 8, {640,480,72,	0x33,	0xF0,	0x48,	0x05,	0x20,	0x28,	0x60,	0x60,	0x60,	0x5E,	0xFE,	 6,	3}},
+     {840, 500, 640, 480, 75, 37.500, 64, 120, 3, 16, 0, 0, 0, 0, {640,480,75,	0x34,	0x70,	0x48,	0x05,	0x20,	0x40,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	3}},
+     {832, 509, 640, 480, 85, 43.269, 56, 80, 3, 25, 0, 0, 0, 0, {640,480,85,	0x33,	0xF0,	0x48,	0x05,	0x20,	0x38,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	3}},
+     {1024, 625, 800, 600, 56, 35.156, 72, 128, 2, 22, 0, 0, 0, 0, {800,600,56,	0x3F,	0xF0,	0x60,	0x05,	0x20,	0x48,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1040, 666, 800, 600, 72, 48.077, 120, 64, 6, 23, 0, 0, 0, 0, {800,600,72,	0x40,	0xF0,	0x60,	0x05,	0x20,	0x78,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1056, 625, 800, 600, 75, 46.875, 80, 160, 3, 21, 0, 0, 0, 0, {800,600,75,	0x41,	0xF0,	0x60,	0x05,	0x20,	0x50,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1048, 631, 800, 600, 85, 53.674, 64, 152, 3, 27, 0, 0, 0, 0, {800,600,85,	0x41,	0x70,	0x60,	0x05,	0x20,	0x40,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1328, 806, 1024, 768, 70, 56.476, 136, 144, 6, 29, 0, 0, 0, 0, {1024,768,70,	0x52,	0xF0,	0xA8,	0x05,	0x20,	0x88,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	7}},
+     {1312, 800, 1024, 768, 75, 60.023, 96, 176, 3, 28, 0, 0, 0, 0, {1024,768,75,	0x51,	0xF0,	0xA8,	0x05,	0x20,	0x60,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	1}},
+     {1376, 808, 1024, 768, 85, 68.677, 96, 208, 3, 36, 0, 0, 0, 0, {1024,768,85,	0x55,	0xF0,	0xA8,	0x05,	0x20,	0x60,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	1}},
+     {1600, 900, 1152, 864, 75, 67.500, 128, 256, 3, 32, 0, 0, 0, 0, {1152,864,75,	0x63,	0xF0,	0xA8,	0x05,	0x20,	0x80,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1728, 1011, 1280, 960, 85, 85.938, 160, 224, 3, 47, 0, 0, 0, 0, {1280,960,85,	0x6B,	0xF0,	0xE8,	0x05,	0x20,	0xA0,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}},
+     {1688, 1066, 1280, 1024, 75, 79.976, 144, 248, 3, 38, 0, 0, 0, 0, {1280,1024,75,	0x69,	0x70,	0xE8,	0x05,	0x20,	0x90,	0x60,	0x60,	0x60,	0x5E,	0xFE,	-1,	0}}
+     // VESA modes below did not include any ADC values...  TODO< figure it out
+     //{1728, 1072, 1280, 1024, 85, 91.146, 160, 224, 3, 44, 0, 0, 0, 0},
+     //{2160, 1250, 1600, 1200, 65, 81.250, 192, 304, 3, 46, 0, 0, 0, 0},
+     //{2160, 1250, 1600, 1200, 70, 87.500, 192, 304, 3, 46, 0, 0, 0, 0},
+     //{2160, 1250, 1600, 1200, 75, 93.750, 192, 304, 3, 46, 0, 0, 0, 0},
+     //{2160, 1250, 1600, 1200, 85, 106.250, 192, 304, 3, 46, 0, 0, 0, 0},
+     //{2080, 1235, 1920, 1200, 60, 74.038, 32, 80, 6, 26, 0, 0, 0, 0}
+     }};
+
+	
\ No newline at end of file
diff --git a/include/video.h b/include/video.h
new file mode 100644
index 0000000..7662c9c
--- /dev/null
+++ b/include/video.h
@@ -0,0 +1,378 @@
+/*
+* The definition and structure for AST 2500 Video Capture Driver
+* Portions Copyright (C) 2015 Insyde Software Corp.
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms and conditions of the GNU General Public License,
+* version 2, as published by the Free Software Foundation.
+*
+* This program is distributed in the hope it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+* more details.
+*/
+
+#ifndef _VIDEO_H_
+#define _VIDEO_H_
+
+#define DEF_Y_TBL             4
+#define DEF_UV_TBL            (7 | 0x10)
+
+#define VIDEO_IOC_MAGIC       'i'
+#define VIDIOCMCAPTURE        _IOW(VIDEO_IOC_MAGIC,  1, struct video_mmap*)
+#define VIDIOCGFBUF           _IOR(VIDEO_IOC_MAGIC,  2, struct video_buffer*)
+#define VIDIOCCAPTURE         _IOW(VIDEO_IOC_MAGIC,  3, unsigned long )
+#define VIDIOCGCAPTURE        _IOR(VIDEO_IOC_MAGIC,  4, subcapture_info*)
+#define VIDIOCSCAPTURE        _IOW(VIDEO_IOC_MAGIC,  5, subcapture_info*)
+#define VIDIOCGSEQ            _IOR(VIDEO_IOC_MAGIC,  6, vseq_info*)
+#define VIDIOCSSEQ            _IOW(VIDEO_IOC_MAGIC,  7, vseq_info*)
+#define VIDIOCGVIN            _IOR(VIDEO_IOC_MAGIC,  8, vin_info*)
+#define VIDIOCSVIN            _IOW(VIDEO_IOC_MAGIC,  9, vin_info*)
+#define VIDIOCGPROC           _IOR(VIDEO_IOC_MAGIC, 10, vproc_info*)
+#define VIDIOCSPROC           _IOW(VIDEO_IOC_MAGIC, 11, vproc_info*)
+#define VIDIOCGCOMP           _IOR(VIDEO_IOC_MAGIC, 12, vcomp_info*)
+#define VIDIOCSCOMP           _IOW(VIDEO_IOC_MAGIC, 13, vcomp_info*)
+#define VIDIOCDBG             _IOR(VIDEO_IOC_MAGIC, 14, unsigned int*)
+#define VIDIOCIMGREFRESH      _IOW(VIDEO_IOC_MAGIC, 15, unsigned int*)
+
+#define VIDEO_IOC_MAXNR       15
+
+#define DUAL_COMP_BUFFER
+#define V_MASK
+
+#define AST2500_DEVICEID      0x25032402
+#define AST2400_DEVICEID      0x00002402
+
+// FLAG_FRAME_SIZE = (x/8) * (y/8) * 4
+// 144K:(1920/8)*(1200/8)*4 (current set 1M)
+#define FLAG_FRAME_SIZE       0x100000 // 1*1024*1024
+// PROC_FRAME_SIZE = X * Y * 4
+// 9M:1920*1200*4,  8M:1600*1200*4,  5M:1280*1024*4,  3M:1024*768*4
+#define PROC_FRAME_SIZE       0x900000 // 9*1024*1024
+// According to VREG(VR_STREAM_BUF_SZ) Video Stream Buffer Size Register
+// bit[2:0] = 7 (128KB), bit[4:3] = 3 (32 packets), So max compression data
+// will be 128KB * 32 = 4 MB,
+// 4M: (128*1024)*32
+#define COMP_FRAME_SIZE       0x400000 // 4*1024*1024
+// Total Video Mem Buffer Size
+// 2 PROC + 2 COMP + 1 FLAG for Capture Eng, 1 PROC + 1 COMP + 1 FLAG for Jpeg Capture Eng
+#define VIDEO_MEM_BUF_SIZE    0x2900000
+// Define Video Memory Start Address According to Memory & Kernel Size
+// Total:128M, 80M for Kernel
+#define SDRAM_MEM_OFFSET_ADDR 0x80000000
+
+#define SYS_MEM_SZ_128M       0
+#define SYS_MEM_SZ_256M       1
+#define SYS_MEM_SZ_512M       2
+#define SYS_MEM_SZ_1024M      3
+
+#define V_MEM_SZ_8M           0
+#define V_MEM_SZ_16M          1
+#define V_MEM_SZ_32M          2
+#define V_MEM_SZ_64M          3
+
+#define MODE_DETECT           0
+#define MODE_CHANGE           1
+#define MAX_NO_SYNC_CNT       100
+#define V_BUSY_TIME_OUT       6           //time tick
+
+// Register Offset
+#define SDRAM_PHY_BASE        0x1E6E0000  //1E6E:0000-1E6E:1FFF
+#define SCU_PHY_BASE          0x1E6E2000  //1E6E:2000-1E6E:2FFF
+#define VIDEO_PHY_BASE        0x1E700000  //1E70:0000-1E7F:FFFF
+
+// IRQ NUMBER
+#define VIDEO_IRQ             7           // for video
+#define CURSOR_IRQ            21          // for quick cursor
+
+// Register Definition
+#define VREG(x)               (*(volatile unsigned int *)(IO_ADDRESS(x + VIDEO_PHY_BASE)))
+#define SDRAMREG(x)           (*(volatile unsigned int *)(IO_ADDRESS(x + SDRAM_PHY_BASE)))
+#define SCUREG(x)             (*(volatile unsigned int *)(IO_ADDRESS(x + SCU_PHY_BASE)))
+
+// Register Protection Key
+#define SCU_UNLOCK_KEY        0x1688A8A8
+#define MCR_UNLOCK_KEY        0xFC600309
+#define VR_UNLOCK_KEY         0x1A038AA8
+
+// SDRAM Memory Controller Register Offset
+#define MCR_PROTECTION_KEY    0x000
+#define MCR_CONFIGURATION     0x004
+#define BACKWARD_SCU_MPLL     0x120
+
+// System Control Unit Register Offset
+#define SCU_PROTECTION_KEY    0x00
+#define SCU_SYSTEM_RESET_CTL  0x04
+#define SCU_CLOCK_SELECTION   0x08
+#define SCU_CLK_STOP_CTL      0x0C
+#define SCU_INTERRUPT_CTL     0x18
+#define SCU_MPLL_PARAMETER    0x20
+#define SCU_MISC1_CTL         0x2C
+#define SCU_SOC_SCRATCH1      0x40
+#define SCU_VGA_SCRATCH1      0x50
+#define SCU_VGA_SCRATCH2      0x54
+#define SCU_HW_STRAPPING      0x70
+#define SCU_SILICON_REV_ID    0x7C
+#define SCU_DEVICE_ID         0x1A4
+
+// Video Register Offset
+#define VR_PROTECT_KEY                0x000
+#define VIDEO_SEQ_CTL                 0x004
+#define VIDEO_PASS1_CTL               0x008
+#define TIMING_GEN_SETTING1           0x00C // if VIDEO_CTL1[5] = 0
+#define TIMING_GEN_SETTING2           0x010 // if VIDEO_CTL1[5] = 0
+#define SCALING_FACTOR                0x014
+#define SCALING_FILTER_PARAMETER0     0x018
+#define SCALING_FILTER_PARAMETER1     0x01C
+#define SCALING_FILTER_PARAMETER2     0x020
+#define SCALING_FILTER_PARAMETER3     0x024
+#define BCD_CTL                       0x02C
+#define CAPTURING_WINDOW_SETTING      0x030
+#define COMP_WINDOW_SETTING           0x034
+#define COMP_STREAM_BUF_PROC_OFFSET   0x038
+#define COMP_STREAM_BUF_READ_OFFSET   0x03C
+#define CRC_BUF_BASE_ADDR             0x040
+#define VIDEO_SOURCE_BUF1_BASE_ADDR   0x044
+#define SOURCE_BUF_SCANLINE_OFFSET    0x048
+#define VIDEO_SOURCE_BUF2_BASE_ADDR   0x04C
+#define BCD_FLAG_BUF_BASE_ADDR        0x050
+#define COMP_STREAM_BUF_BASE_ADDR     0x054
+#define VIDEO_STREAM_BUF_SIZE         0x058
+#define COMP_STREAM_BUF_WRITE_OFFSET  0x05C
+#define VIDEO_COMP_CTL                0x060
+#define JPEG_BIT_CTRL                 0x064
+#define QUANTIZATION_VALUE            0x068
+#define COPY_BUF_BASE_ADDR            0x06C
+#define COMP_STREAM_SIZE              0x070
+#define COMP_BLOCK_NUM                0x074
+#define COMP_STREAM_BUF_END_OFFSET    0x078
+#define COMP_FRAME_COUNTER            0x07C
+#define USER_HDR_PARAM                0x080
+#define SOURCE_L_R_EDGE_DETECT        0x090
+#define SOURCE_T_B_EDGE_DETECT        0x094
+#define MODE_DETECT_STATUS            0x098
+
+/* Video Management Engine, i.e. 2nd Set Video Engine */
+#define VM_SEQ_CTRL                   0x204
+#define VM_PASS_CTRL                  0x208
+#define VM_SCALING_FACTOR             0x214
+#define VM_CAP_WINDOW_SETTING         0x230
+#define VM_COMP_WINDOW_SETTING        0x234
+#define VM_COMP_BUF_PROC_OFFSET       0x238
+#define VM_COMP_BUF_READ_OFFSET       0x23C
+#define VM_JPEG_HEADER_BUFF           0x240
+#define VM_SOURCE_BUFF0               0x244
+#define VM_SRC_BUF_SCANLINE_OFFSET    0x248
+#define VM_COMPRESS_BUFF              0x254
+#define VM_STREAM_SIZE                0x258
+#define VM_COMPRESS_CTRL              0x260
+#define VM_JPEG_BIT_CTRL              0x264
+#define VM_QUANTIZATION_VALUE         0x268
+#define VM_COPY_BUF_BASE_ADDR         0x26C
+#define VM_COMP_STREAM_SIZE           0x070
+#define VM_COMP_BLOCK_NUM             0x074
+#define VM_COMP_STREAM_BUF_END_OFFSET 0x278
+#define VM_USER_HDR_PARAM             0x280
+
+#define VIDEO_PASS3_CTRL              0x300
+#define INTERRUPT_CTL                 0x304
+#define INTERRUPT_STATUS              0x308
+#define MODE_DETECT_PARAMETER         0x30C
+#define MEM_RESTRICT_START_ADDR       0x310
+#define MEM_RESTRICT_END_ADDR         0x314
+#define PRI_CRC_PARAMETER             0x320
+#define SEC_CRC_PARAMETER             0x324
+#define DATA_TRUNCATION               0x328
+#define VGA_SCRATCH_REMAP1            0x340
+#define VGA_SCRATCH_REMAP2            0x344
+#define VGA_SCRATCH_REMAP3            0x348
+#define VGA_SCRATCH_REMAP4            0x34C
+#define VGA_SCRATCH_REMAP5            0x350
+#define VGA_SCRATCH_REMAP6            0x354
+#define VGA_SCRATCH_REMAP7            0x358
+#define VGA_SCRATCH_REMAP8            0x35C
+#define RC4KEYS_REGISTER              0x400 //0x400~0x4FC  RC4 Encryption Key Register #0~#63
+
+//
+// Cursor struct is used in User Mode
+//
+typedef struct _cursor_attribution_tag {
+  unsigned int posX;
+  unsigned int posY;
+  unsigned int cur_width;
+  unsigned int cur_height;
+  unsigned int cur_type;      //0:mono 1:color 2:disappear cursor
+  unsigned int cur_change_flag;
+} AST_CUR_ATTRIBUTION_TAG;
+
+//
+// For storing Cursor Information
+//
+typedef struct _cursor_tag {
+  AST_CUR_ATTRIBUTION_TAG attr;
+  //unsigned char     icon[MAX_CUR_OFFSETX*MAX_CUR_OFFSETY*2];
+  unsigned char *icon;       //[64*64*2];
+} AST_CURSOR_TAG;
+
+//
+// For select image format, i.e. 422 JPG420, 444 JPG444, lumin/chrom table, 0 ~ 11, low to high
+//
+typedef struct _video_features {
+  short jpg_fmt;             //422:JPG420, 444:JPG444
+  short lumin_tbl;
+  short chrom_tbl;
+  short tolerance_noise;
+  int w;
+  int h;
+  unsigned char *buf;
+} FEATURES_TAG;
+
+//
+// For configure video engine control registers
+//
+typedef struct _image_info {
+  short do_image_refresh;    // Action 0:motion 1:fullframe 2:quick cursor
+  char qc_valid;             // quick cursor enable/disable
+  unsigned int len;
+  int crypttype;
+  char cryptkey[16];
+  union {
+    FEATURES_TAG features;
+    AST_CURSOR_TAG cursor_info;
+  } parameter;
+} IMAGE_INFO;
+
+typedef struct _video_set_chk {
+  short get_qc_info;         // Quick Cursor Info
+  short do_image_refresh;
+  FEATURES_TAG features;
+} video_set_chk;
+
+struct video_buffer {
+  void *base;
+  int height, width;
+  int depth;
+  int bytesperline;
+};
+
+//
+// Data Structure for Video Buffer Layout
+// kept information about video buffer layout, used in memory initialization.
+//
+typedef struct _buf_layout {
+  int c_proc;
+  int c_comp;
+  unsigned int in;           // video in buffer
+  unsigned int proc [2];     // old and current proc buffer
+  unsigned int comp [2];     // compressed data buffer
+  unsigned int flag;         // flag buffer
+  unsigned int jpgproc;       // old and current proc buffer for jpeg
+  unsigned int jpgcomp;       // compressed data buffer for jpeg
+  unsigned int jpgflag;       // flag buffer for jpeg
+} buf_layout;
+
+//
+// subcapture_info:
+// linestep - byte per line after scaling, but 32 byte align
+// step - scaling step, decrease 8 pixels a step after scaling.
+// scaled_h - height after scaling.
+// scaled_w - width after scaling.
+// hor_factor, ver_factor - horizontal and vertical scaling factor
+// init - initialized = 0, not initialized = 1, set by mode_detect
+//
+typedef struct _subcature_info {
+  int linestep;
+  short x, y, width, height, scaled_h, scaled_w;
+  unsigned short hor_factor, ver_factor;
+  short step, init;
+} subcapture_info;
+
+//
+// video_hw_info:
+// cap_seq - capture orders, CAP_PASSX and CAP_INIT_FRAME
+// cap_int - interrupt to enable
+// cur_idx - current idx of resolution table content.
+//
+// mode_change must be
+// set by interrupt handler, and clear
+// when capture start.
+//
+
+//FK Comment :
+//interrupt handler for mode_chage
+//capture start, mode_chage, clear
+//cur_idx resolution state, Ex: 800x600 80Hz, ...
+//cap_int interrupt enable
+//cap_seq captor orders i.e. CAP_PASS1, CAP_PASS2..., or CAP_INIT_FRAME
+#define MCAP_FRAME  2
+typedef struct _mcap_info {
+  int offset;
+  int size;
+} mcap_info;
+
+typedef struct _video_hw_info {
+  int cap_seq;
+  mcap_info mcap [MCAP_FRAME];       // record each frame size of mcapture
+  //volatile short width, height, fix_x, fix_y, cur_idx;
+  short width, height, fix_x, fix_y, cur_idx;
+  short max_h, max_w, min_h, min_w;
+  short cap_int;
+
+  char mode_changed;                 //1130 modify
+  //volatile char mode_changed;      //1130 modify
+  char cap_done, capturing, disconnect;  //, mode_changed; //, cur_idx;
+  char can_capture;                  // prevent hardware error.
+  subcapture_info subcap;
+//  VIDEO_ENGINE_INFO ve_info;
+} video_hw_info;
+
+struct video_mmap {
+  unsigned int frame; // Frame (0 - n) for double buffer
+  int height, width;
+  unsigned int format; // should be VIDEO_PALETTE_*
+};
+
+// Internal_Mode Table for resolution checking
+typedef struct {
+  unsigned short HorizontalActive;
+  unsigned short VerticalActive;
+  unsigned short RefreshRateIndex;
+  unsigned int PixelClock;
+} INTERNAL_MODE;
+
+INTERNAL_MODE Internal_Mode [] = {
+    // 1024x768
+    { 1024, 768, 0, 65 },
+    { 1024, 768, 1, 65 },
+    { 1024, 768, 2, 75 },
+    { 1024, 768, 3, 79 },
+    { 1024, 768, 4, 95 },
+
+    // 1280x1024
+    { 1280, 1024, 0, 108 },
+    { 1280, 1024, 1, 108 },
+    { 1280, 1024, 2, 135 },
+    { 1280, 1024, 3, 158 },
+
+    // 1600x1200
+    { 1600, 1200, 0, 162 },
+    { 1600, 1200, 1, 162 },
+    { 1600, 1200, 2, 176 },
+    { 1600, 1200, 3, 189 },
+    { 1600, 1200, 4, 203 },
+    { 1600, 1200, 5, 230 },
+
+    // 1920x1200 reduce blank
+    { 1920, 1200, 0, 157 },
+    { 1920, 1200, 1, 157 },
+};
+
+typedef enum vga_color_mode {
+  VGA_NO_SIGNAL = 0,
+  EGA_MODE,
+  VGA_MODE,
+  VGA_15BPP_MODE,
+  VGA_16BPP_MODE,
+  VGA_32BPP_MODE,
+} color_mode;
+#endif //_VIDEO_H_
diff --git a/include/webassets.hpp b/include/webassets.hpp
index b2bda68..924b1d5 100644
--- a/include/webassets.hpp
+++ b/include/webassets.hpp
@@ -6,12 +6,11 @@
 #include <crow/http_request.h>
 #include <crow/http_response.h>
 
-// TODO this is wrong.  file handler shouldn't care about middlewares
 #include <crow/routing.h>
-#include "token_authorization_middleware.hpp"
+#include <app_type.hpp>
 
 namespace crow {
 namespace webassets {
-void request_routes(crow::App<crow::TokenAuthorizationMiddleware>& app);
+void request_routes(BmcAppType& app);
 }
 }
\ No newline at end of file
