diff --git a/conf/pmd.conf b/conf/pmd.conf
index c4c5a66..f622385 100644
--- a/conf/pmd.conf
+++ b/conf/pmd.conf
@@ -9,6 +9,11 @@ rolepluginsdir=/etc/javelin.roles.plugins.d
 enabled=1
 port=2081
 apispec=/etc/pmd/restapispec.json
+sslcert=/etc/pmd/server.crt
+sslkey=/etc/pmd/server.key
+logfile=/var/log/pmd/restServer.log
+client-count=5
+worker-thread-count=5
 
 [rpc-server]
 enabled=1
diff --git a/server/config.c b/server/config.c
index ef42750..e7841a5 100644
--- a/server/config.c
+++ b/server/config.c
@@ -44,6 +44,21 @@ pmd_get_rest_config(
                                (void **)&pRestConfig);
     BAIL_ON_PMD_ERROR(dwError);
 
+    //set defaults
+    pRestConfig->nWorkerThreadCount = PMD_REST_DEFAULT_WORKER_THREAD;
+    pRestConfig->nClientCount = PMD_REST_DEFAULT_CLIENTS;
+    dwError = PMDAllocateString(PMD_REST_DEFAULT_SSL_CERT,
+                                &pRestConfig->pszSSLCert);
+    BAIL_ON_PMD_ERROR(dwError);
+    dwError = PMDAllocateString(PMD_REST_DEFAULT_SSL_KEY,
+                                &pRestConfig->pszSSLKey);
+
+    BAIL_ON_PMD_ERROR(dwError);
+    dwError = PMDAllocateString(PMD_REST_DEFAULT_LOG_FILE,
+                                &pRestConfig->pszLogFile);
+    BAIL_ON_PMD_ERROR(dwError);
+
+
     pKeyValues = pSection->pKeyValues;
     for(; pKeyValues; pKeyValues = pKeyValues->pNext)
     {
@@ -55,6 +70,16 @@ pmd_get_rest_config(
         {
             pRestConfig->nPort = atoi(pKeyValues->pszValue);
         }
+        else if(!strcmp(PMD_CONFIG_KEY_REST_WORKER_THREAD_COUNT,
+                        pKeyValues->pszKey))
+        {
+            pRestConfig->nWorkerThreadCount = atoi(pKeyValues->pszValue);
+        }
+        else if(!strcmp(PMD_CONFIG_KEY_REST_CLIENT_COUNT,
+                        pKeyValues->pszKey))
+        {
+            pRestConfig->nClientCount = atoi(pKeyValues->pszValue);
+        }
         else if(!strcmp(PMD_CONFIG_KEY_REST_APISPEC, pKeyValues->pszKey))
         {
             dwError = PMDAllocateString(pKeyValues->pszValue,
@@ -66,6 +91,24 @@ pmd_get_rest_config(
             pRestConfig->nUseKerberos =
                 strcmp(pKeyValues->pszValue, "kerberos") == 0;
         }
+        else if(!strcmp(PMD_CONFIG_KEY_REST_SSL_CERT, pKeyValues->pszKey))
+        {
+            dwError = PMDAllocateString(pKeyValues->pszValue,
+                                        &pRestConfig->pszSSLCert);
+            BAIL_ON_PMD_ERROR(dwError);
+        }
+        else if(!strcmp(PMD_CONFIG_KEY_REST_SSL_KEY, pKeyValues->pszKey))
+        {
+            dwError = PMDAllocateString(pKeyValues->pszValue,
+                                        &pRestConfig->pszSSLKey);
+            BAIL_ON_PMD_ERROR(dwError);
+        }
+        else if(!strcmp(PMD_CONFIG_KEY_REST_LOG_FILE, pKeyValues->pszKey))
+        {
+            dwError = PMDAllocateString(pKeyValues->pszValue,
+                                        &pRestConfig->pszLogFile);
+            BAIL_ON_PMD_ERROR(dwError);
+        }
     }
 
     *ppRestConfig = pRestConfig;
@@ -171,6 +214,9 @@ pmd_free_rest_config(
         return;
     }
     PMD_SAFE_FREE_MEMORY(pRestConf->pszApiSpec);
+    PMD_SAFE_FREE_MEMORY(pRestConf->pszLogFile);
+    PMD_SAFE_FREE_MEMORY(pRestConf->pszSSLCert);
+    PMD_SAFE_FREE_MEMORY(pRestConf->pszSSLKey);
     PMD_SAFE_FREE_MEMORY(pRestConf);
 }
 
diff --git a/server/defines.h b/server/defines.h
index 513a1f2..43e1022 100644
--- a/server/defines.h
+++ b/server/defines.h
@@ -33,6 +33,11 @@ typedef struct _PMDHANDLE_* PPMDHANDLE;
 #define PMD_CONFIG_KEY_REST_PORT    "port"
 #define PMD_CONFIG_KEY_REST_APISPEC "apispec"
 #define PMD_CONFIG_KEY_REST_AUTH    "authenticate"
+#define PMD_CONFIG_KEY_REST_SSL_CERT "sslcert"
+#define PMD_CONFIG_KEY_REST_SSL_KEY "sslkey"
+#define PMD_CONFIG_KEY_REST_WORKER_THREAD_COUNT "worker-thread-count"
+#define PMD_CONFIG_KEY_REST_CLIENT_COUNT "client-count"
+#define PMD_CONFIG_KEY_REST_LOG_FILE "logfile"
 
 #define PMD_CONFIG_KEY_SERVERTYPE "servertype"
 #define PMD_CONFIG_KEY_CURRENTHASH "currenthash"
@@ -51,3 +56,10 @@ typedef struct _PMDHANDLE_* PPMDHANDLE;
 #define PKG_PRIVSEP "pkg_privsep"
 #define NET_PRIVSEP "net_privsep"
 #define USERMGMT_PRIVSEP "usermgmt_privsep"
+
+#define VMREST_STOP_TIMEOUT_SECS       2
+#define PMD_REST_DEFAULT_WORKER_THREAD 5
+#define PMD_REST_DEFAULT_CLIENTS       5
+#define PMD_REST_DEFAULT_LOG_FILE      "/var/log/pmd/restServer.log"
+#define PMD_REST_DEFAULT_SSL_CERT      "/etc/pmd/server.crt"
+#define PMD_REST_DEFAULT_SSL_KEY       "/etc/pmd/server.key"
diff --git a/server/restserver.c b/server/restserver.c
index 4f8f337..41d0c13 100644
--- a/server/restserver.c
+++ b/server/restserver.c
@@ -22,6 +22,7 @@ StartRestServer(
     PREST_API_DEF pApiDef = NULL;
     PREST_PROCESSOR pRestProcessor = NULL;
     PPMD_REST_CONFIG pRestConfig = NULL;
+    REST_CONF stRestConfig = {0};
 
     MODULE_REG_MAP stRegMap[] =
     {
@@ -46,9 +47,19 @@ StartRestServer(
         BAIL_ON_PMD_ERROR(dwError);
     }
 
+    stRestConfig.serverPort = pRestConfig->nPort;
+    stRestConfig.nWorkerThr = pRestConfig->nWorkerThreadCount;
+    stRestConfig.nClientCnt = pRestConfig->nClientCount;
+    stRestConfig.pszSSLCertificate = pRestConfig->pszSSLCert;
+    stRestConfig.pszSSLKey = pRestConfig->pszSSLKey;
+    stRestConfig.pszDebugLogFile = pRestConfig->pszLogFile;
+    stRestConfig.isSecure = 1;
+    stRestConfig.debugLogLevel = VMREST_LOG_LEVEL_ERROR;
+    stRestConfig.useSysLog = 1;
+fprintf(stdout, "log = %s\n", stRestConfig.pszDebugLogFile);
+
     dwError =  VmRESTInit(
-                   NULL,
-                   "/etc/pmd/restconfig.txt",
+                   &stRestConfig,
                    &gpServerEnv->pRestHandle);
     BAIL_ON_PMD_ERROR(dwError);
 
@@ -96,7 +107,7 @@ StopRestServer()
         fprintf(stdout, "rest server not started. skipping stop.\n");
         return;
     }
-    VmRESTStop(gpServerEnv->pRestHandle);
+    VmRESTStop(gpServerEnv->pRestHandle, VMREST_STOP_TIMEOUT_SECS);
     gpServerEnv->pRestHandle = NULL;
     fprintf(stdout, "stopped rest server.\n");
 }
diff --git a/server/restutils/restutils.c b/server/restutils/restutils.c
index bf2b9fc..cd0509f 100644
--- a/server/restutils/restutils.c
+++ b/server/restutils/restutils.c
@@ -387,7 +387,7 @@ get_uri_from_request(
     char *pszURI = NULL;
     char *pszTempURI = NULL;
 
-    dwError = VmRESTGetHttpURI(pRequest, &pszRealURI);
+    dwError = VmRESTGetHttpURI(pRequest, 1, &pszRealURI);
     BAIL_ON_PMD_ERROR(dwError);
 
     pszTempURI = strchr(pszRealURI, '?');
diff --git a/server/structs.h b/server/structs.h
index 6d17d0a..5714bc7 100644
--- a/server/structs.h
+++ b/server/structs.h
@@ -23,7 +23,12 @@ typedef struct _PMD_REST_CONFIG_
     int nEnabled;
     int nPort;
     int nUseKerberos;
+    int nWorkerThreadCount;
+    int nClientCount;
     char *pszApiSpec;
+    char *pszSSLCert;
+    char *pszSSLKey;
+    char *pszLogFile;
 }PMD_REST_CONFIG, *PPMD_REST_CONFIG;
 
 typedef struct _PMD_CONFIG_