diff --git a/conf/flow.xml b/conf/flow.xml
deleted file mode 100644
index 0832696..0000000
--- a/conf/flow.xml
+++ /dev/null
@@ -1,299 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>e01275ae-ac38-48f9-ac53-1a44df1be88e</id>
-      <name>LogAttribute</name>
-      <position x="3950.0958625440016" y="1355.8949219185629"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
-      <name>LogAttribute</name>
-      <position x="3259.732177734375" y="1739.991943359375"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>a0e57bb2-5b89-438e-8869-0326bbdbbe43</id>
-      <name>GenerateFlowFile</name>
-      <position x="2643.1135987796815" y="1457.4419966791334"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>1 s</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>File Size</name>
-        <value>1024 kB</value>
-      </property>
-      <property>
-        <name>Batch Size</name>
-        <value>1</value>
-      </property>
-      <property>
-        <name>Data Format</name>
-        <value>Text</value>
-      </property>
-      <property>
-        <name>Unique FlowFiles</name>
-        <value>false</value>
-      </property>
-    </processor>
-    <label>
-      <id>809d63d9-6feb-496a-9dc3-d23c217e52fd</id>
-      <position x="3635.581271381991" y="1309.9918825902428"/>
-      <size height="193.5023651123047" width="641.0671997070312"/>
-      <styles>
-        <style name="background-color">#9a91ff</style>
-        <style name="font-size">16px</style>
-      </styles>
-      <value>Pull From Node B</value>
-    </label>
-    <label>
-      <id>d95ce8d3-c005-4d0b-8fcc-b2f6fae7172f</id>
-      <position x="2601.7320892530847" y="1413.1875613011803"/>
-      <size height="193.5023651123047" width="641.0671997070312"/>
-      <styles>
-        <style name="font-size">16px</style>
-      </styles>
-      <value>Push to Node B</value>
-    </label>
-    <remoteProcessGroup>
-      <id>8f3b248f-d493-4269-b317-36f85719f480</id>
-      <name>NiFi Flow</name>
-      <position x="3254.3356850982673" y="1432.3274284388426"/>
-      <comment/>
-      <url>http://localhost:8081/nifi</url>
-      <timeout>30 sec</timeout>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <transmitting>true</transmitting>
-      <inputPort>
-        <id>471deef6-2a6e-4a7d-912a-81cc17e3a204</id>
-        <name> From Node A</name>
-        <position x="0.0" y="0.0"/>
-        <comments/>
-        <scheduledState>RUNNING</scheduledState>
-        <maxConcurrentTasks>1</maxConcurrentTasks>
-        <useCompression>false</useCompression>
-        <property>
-            <name>Host Name</name>
-          	<value>localhost</value>
-        </property>
-        <property>
-            <name>Port</name>
-            <value>10001</value>
-        </property>
-      </inputPort>
-      <outputPort>
-        <id>75f88005-0a87-4fef-8320-6219cdbcf18b</id>
-        <name>To A</name>
-        <position x="0.0" y="0.0"/>
-        <comments/>
-        <scheduledState>RUNNING</scheduledState>
-        <maxConcurrentTasks>1</maxConcurrentTasks>
-        <useCompression>false</useCompression>
-        <property>
-            <name>Host Name</name>
-            <value>localhost</value>
-        </property>
-        <property>
-            <name>Port</name>
-            <value>10001</value>
-        </property>
-      </outputPort>
-    </remoteProcessGroup>
-    <connection>
-      <id>c4cf70d8-be05-4c3d-b926-465f330d6503</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-    <connection>
-      <id>c9573abe-937c-464b-b18d-48b29c42dce2</id>
-      <name>site2siteSEND</name>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>471deef6-2a6e-4a7d-912a-81cc17e3a204</destinationId>
-      <destinationGroupId>8f3b248f-d493-4269-b317-36f85719f480</destinationGroupId>
-      <destinationType>REMOTE_INPUT_PORT</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-    <connection>
-      <id>2cb90b4c-d6cb-4fef-8f0f-b16459561af5</id>
-      <name>site2siteReceive</name>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>75f88005-0a87-4fef-8320-6219cdbcf18b</sourceId>
-      <sourceGroupId>8f3b248f-d493-4269-b317-36f85719f480</sourceGroupId>
-      <sourceType>REMOTE_OUTPUT_PORT</sourceType>
-      <destinationId>e01275ae-ac38-48f9-ac53-1a44df1be88e</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship/>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices>
-    <controllerService>
-      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
-      <name>DistributedMapCacheClientService</name>
-      <comment/>
-      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Server Hostname</name>
-        <value>localhost</value>
-      </property>
-      <property>
-        <name>Server Port</name>
-        <value>4557</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
-      </property>
-      <property>
-        <name>Communications Timeout</name>
-        <value>30 secs</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
-      <name>StandardSSLContextService</name>
-      <comment/>
-      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Keystore Filename</name>
-      </property>
-      <property>
-        <name>Keystore Password</name>
-      </property>
-      <property>
-        <name>Keystore Type</name>
-      </property>
-      <property>
-        <name>Truststore Filename</name>
-        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
-      </property>
-      <property>
-        <name>Truststore Password</name>
-        <value>enc{3A31531B76B6395A72FB8BEB4C93E2040877D07C04FDAB5A84499B918BECEB77}</value>
-      </property>
-      <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
-      </property>
-      <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
-      </property>
-    </controllerService>
-  </controllerServices>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flow.yml b/conf/flow.yml
deleted file mode 100644
index 6ebfa70..0000000
--- a/conf/flow.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the \"License\"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an \"AS IS\" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-Flow Controller:
-    name: MiNiFi Flow
-
-Processors:
-    - name: GetFile
-      class: org.apache.nifi.processors.standard.GetFile
-      max concurrent tasks: 1
-      scheduling strategy: TIMER_DRIVEN
-      scheduling period: 1 sec
-      penalization period: 30 sec
-      yield period: 1 sec
-      run duration nanos: 0
-      auto-terminated relationships list:
-      Properties:
-          Input Directory: /tmp/getfile
-          Keep Source File: true
-
-Connections:
-    - name: GenerateFlowFileS2S
-      source name: GetFile
-      source relationship name: success
-      destination name: 471deef6-2a6e-4a7d-912a-81cc17e3a204
-      max work queue size: 0
-      max work queue data size: 1 MB
-      flowfile expiration: 60 sec
-      queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
-
-Remote Processing Groups:
-    - name: NiFi Flow
-      url: https://localhost:8081/nifi
-      timeout: 30 secs
-      yield period: 10 sec
-      Input Ports:
-          - id: 471deef6-2a6e-4a7d-912a-81cc17e3a204
-            name: From Node A
-            max concurrent tasks: 1
-            use compression: false
-            Properties: # Deviates from spec and will later be removed when this is autonegotiated
-                Port: 10001
-                Host Name: localhost
diff --git a/conf/flowGetFile.xml b/conf/flowGetFile.xml
deleted file mode 100644
index 44baf6a..0000000
--- a/conf/flowGetFile.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>9347f92c-3dcc-4ece-ba97-d67eed846a39</id>
-      <name>GetFile</name>
-      <position x="2495.369384765625" y="749.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.GetFile</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>5 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>STOPPED</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Input Directory</name>
-        <value>/Users/user/GetFile</value>
-      </property>
-      <property>
-        <name>File Filter</name>
-        <value>[^\.].*</value>
-      </property>
-      <property>
-        <name>Path Filter</name>
-      </property>
-      <property>
-        <name>Batch Size</name>
-        <value>10</value>
-      </property>
-      <property>
-        <name>Keep Source File</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Recurse Subdirectories</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Polling Interval</name>
-        <value>0 sec</value>
-      </property>
-      <property>
-        <name>Ignore Hidden Files</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Minimum File Age</name>
-        <value>0 sec</value>
-      </property>
-      <property>
-        <name>Maximum File Age</name>
-      </property>
-      <property>
-        <name>Minimum File Size</name>
-        <value>0 B</value>
-      </property>
-      <property>
-        <name>Maximum File Size</name>
-      </property>
-    </processor>
-    <processor>
-      <id>12e3dece-dde5-44a2-8691-6d6bb2fab147</id>
-      <name>LogAttribute</name>
-      <position x="3239.369384765625" y="822.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>STOPPED</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <connection>
-      <id>d02db6bf-8c6f-463b-b07e-47f7ab726502</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>9347f92c-3dcc-4ece-ba97-d67eed846a39</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>12e3dece-dde5-44a2-8691-6d6bb2fab147</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices/>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flowListenSyslog.xml b/conf/flowListenSyslog.xml
deleted file mode 100644
index 8539bef..0000000
--- a/conf/flowListenSyslog.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>291ee60c-0b91-4524-88c0-d71ee2498e02</id>
-      <name>ListenSyslog</name>
-      <position x="2489.369384765625" y="788.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.ListenSyslog</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Protocol</name>
-        <value>UDP</value>
-      </property>
-      <property>
-        <name>Port</name>
-        <value>514</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
-      </property>
-      <property>
-        <name>Receive Buffer Size</name>
-        <value>65507 B</value>
-      </property>
-      <property>
-        <name>Max Size of Socket Buffer</name>
-        <value>1 MB</value>
-      </property>
-      <property>
-        <name>Max Number of TCP Connections</name>
-        <value>2</value>
-      </property>
-      <property>
-        <name>Max Batch Size</name>
-        <value>10</value>
-      </property>
-      <property>
-        <name>Message Delimiter</name>
-        <value>\n</value>
-      </property>
-      <property>
-        <name>Parse Messages</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Character Set</name>
-        <value>UTF-8</value>
-      </property>
-      <autoTerminatedRelationship>invalid</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>12e3dece-dde5-44a2-8691-6d6bb2fab147</id>
-      <name>LogAttribute</name>
-      <position x="3236.369384765625" y="830.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <connection>
-      <id>c9e1cc50-2bc7-490d-9b5d-8c5dbc95a850</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>291ee60c-0b91-4524-88c0-d71ee2498e02</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>12e3dece-dde5-44a2-8691-6d6bb2fab147</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices/>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flowServer.xml b/conf/flowServer.xml
deleted file mode 100644
index 0aa29ed..0000000
--- a/conf/flowServer.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
-      <name>RealTimeDataCollector</name>
-      <position x="3259.732177734375" y="1739.991943359375"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.RealTimeDataCollector</class>
-      <maxConcurrentTasks>2</maxConcurrentTasks>
-      <schedulingPeriod>10 ms</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>File Name</name>
-        <value>data.osp</value>
-      </property>
-      <property>
-        <name>Real Time Server Name</name>
-        <value>localhost</value>
-      </property>
-      <property>
-        <name>Real Time Server Port</name>
-        <value>10000</value>
-      </property>
-      <property>
-        <name>Batch Server Name</name>
-        <value>localhost</value>
-      </property>
-      <property>
-        <name>Batch Server Port</name>
-        <value>10001</value>
-      </property>
-      <property>
-        <name>Iteration</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Real Time Message ID</name>
-        <value>41</value>
-      </property>
-      <property>
-        <name>Batch Message ID</name>
-        <value>172,48</value>
-      </property>
-      <property>
-        <name>Real Time Interval</name>
-        <value>200 ms</value>
-      </property>
-      <property>
-        <name>Batch Time Interval</name>
-        <value>1 sec</value>
-      </property>
-      <property>
-        <name>Batch Max Buffer Size</name>
-        <value>262144</value>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-  </rootGroup>
-  <controllerServices>
-    <controllerService>
-      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
-      <name>DistributedMapCacheClientService</name>
-      <comment/>
-      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Server Hostname</name>
-        <value>localhost</value>
-      </property>
-      <property>
-        <name>Server Port</name>
-        <value>4557</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
-      </property>
-      <property>
-        <name>Communications Timeout</name>
-        <value>30 secs</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
-      <name>StandardSSLContextService</name>
-      <comment/>
-      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Keystore Filename</name>
-      </property>
-      <property>
-        <name>Keystore Password</name>
-      </property>
-      <property>
-        <name>Keystore Type</name>
-      </property>
-      <property>
-        <name>Truststore Filename</name>
-        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
-      </property>
-      <property>
-        <name>Truststore Password</name>
-        <value>enc{9E2EE146023A0F31914706460EB177B357796CF0C768DECE09D10C4B40F344C8}</value>
-      </property>
-      <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
-      </property>
-      <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
-      </property>
-    </controllerService>
-  </controllerServices>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flowTailFile.xml b/conf/flowTailFile.xml
deleted file mode 100644
index bffadf1..0000000
--- a/conf/flowTailFile.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>12e3dece-dde5-44a2-8691-6d6bb2fab147</id>
-      <name>LogAttribute</name>
-      <position x="3239.369384765625" y="822.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>c6ced523-be07-48d3-90c2-82b87d208f2e</id>
-      <name>TailFile</name>
-      <position x="2629.369384765625" y="761.25244140625"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.TailFile</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>1 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>File to Tail</name>
-        <value>/Users/user/getFile/log.txt</value>
-      </property>
-      <property>
-        <name>Rolling Filename Pattern</name>
-      </property>
-      <property>
-        <name>State File</name>
-        <value>log.state</value>
-      </property>
-      <property>
-        <name>Initial Start Position</name>
-        <value>Beginning of File</value>
-      </property>
-      <property>
-        <name>File Location</name>
-        <value>Local</value>
-      </property>
-    </processor>
-    <connection>
-      <id>12899241-005e-4d98-b3fa-7e00b1840bac</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>c6ced523-be07-48d3-90c2-82b87d208f2e</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>12e3dece-dde5-44a2-8691-6d6bb2fab147</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices/>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flowTest.xml b/conf/flowTest.xml
deleted file mode 100644
index 0832696..0000000
--- a/conf/flowTest.xml
+++ /dev/null
@@ -1,299 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>e01275ae-ac38-48f9-ac53-1a44df1be88e</id>
-      <name>LogAttribute</name>
-      <position x="3950.0958625440016" y="1355.8949219185629"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
-      <name>LogAttribute</name>
-      <position x="3259.732177734375" y="1739.991943359375"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>false</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>a0e57bb2-5b89-438e-8869-0326bbdbbe43</id>
-      <name>GenerateFlowFile</name>
-      <position x="2643.1135987796815" y="1457.4419966791334"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>1 s</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>File Size</name>
-        <value>1024 kB</value>
-      </property>
-      <property>
-        <name>Batch Size</name>
-        <value>1</value>
-      </property>
-      <property>
-        <name>Data Format</name>
-        <value>Text</value>
-      </property>
-      <property>
-        <name>Unique FlowFiles</name>
-        <value>false</value>
-      </property>
-    </processor>
-    <label>
-      <id>809d63d9-6feb-496a-9dc3-d23c217e52fd</id>
-      <position x="3635.581271381991" y="1309.9918825902428"/>
-      <size height="193.5023651123047" width="641.0671997070312"/>
-      <styles>
-        <style name="background-color">#9a91ff</style>
-        <style name="font-size">16px</style>
-      </styles>
-      <value>Pull From Node B</value>
-    </label>
-    <label>
-      <id>d95ce8d3-c005-4d0b-8fcc-b2f6fae7172f</id>
-      <position x="2601.7320892530847" y="1413.1875613011803"/>
-      <size height="193.5023651123047" width="641.0671997070312"/>
-      <styles>
-        <style name="font-size">16px</style>
-      </styles>
-      <value>Push to Node B</value>
-    </label>
-    <remoteProcessGroup>
-      <id>8f3b248f-d493-4269-b317-36f85719f480</id>
-      <name>NiFi Flow</name>
-      <position x="3254.3356850982673" y="1432.3274284388426"/>
-      <comment/>
-      <url>http://localhost:8081/nifi</url>
-      <timeout>30 sec</timeout>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <transmitting>true</transmitting>
-      <inputPort>
-        <id>471deef6-2a6e-4a7d-912a-81cc17e3a204</id>
-        <name> From Node A</name>
-        <position x="0.0" y="0.0"/>
-        <comments/>
-        <scheduledState>RUNNING</scheduledState>
-        <maxConcurrentTasks>1</maxConcurrentTasks>
-        <useCompression>false</useCompression>
-        <property>
-            <name>Host Name</name>
-          	<value>localhost</value>
-        </property>
-        <property>
-            <name>Port</name>
-            <value>10001</value>
-        </property>
-      </inputPort>
-      <outputPort>
-        <id>75f88005-0a87-4fef-8320-6219cdbcf18b</id>
-        <name>To A</name>
-        <position x="0.0" y="0.0"/>
-        <comments/>
-        <scheduledState>RUNNING</scheduledState>
-        <maxConcurrentTasks>1</maxConcurrentTasks>
-        <useCompression>false</useCompression>
-        <property>
-            <name>Host Name</name>
-            <value>localhost</value>
-        </property>
-        <property>
-            <name>Port</name>
-            <value>10001</value>
-        </property>
-      </outputPort>
-    </remoteProcessGroup>
-    <connection>
-      <id>c4cf70d8-be05-4c3d-b926-465f330d6503</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-    <connection>
-      <id>c9573abe-937c-464b-b18d-48b29c42dce2</id>
-      <name>site2siteSEND</name>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>471deef6-2a6e-4a7d-912a-81cc17e3a204</destinationId>
-      <destinationGroupId>8f3b248f-d493-4269-b317-36f85719f480</destinationGroupId>
-      <destinationType>REMOTE_INPUT_PORT</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-    <connection>
-      <id>2cb90b4c-d6cb-4fef-8f0f-b16459561af5</id>
-      <name>site2siteReceive</name>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>75f88005-0a87-4fef-8320-6219cdbcf18b</sourceId>
-      <sourceGroupId>8f3b248f-d493-4269-b317-36f85719f480</sourceGroupId>
-      <sourceType>REMOTE_OUTPUT_PORT</sourceType>
-      <destinationId>e01275ae-ac38-48f9-ac53-1a44df1be88e</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship/>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices>
-    <controllerService>
-      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
-      <name>DistributedMapCacheClientService</name>
-      <comment/>
-      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Server Hostname</name>
-        <value>localhost</value>
-      </property>
-      <property>
-        <name>Server Port</name>
-        <value>4557</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
-      </property>
-      <property>
-        <name>Communications Timeout</name>
-        <value>30 secs</value>
-      </property>
-    </controllerService>
-    <controllerService>
-      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
-      <name>StandardSSLContextService</name>
-      <comment/>
-      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
-      <enabled>true</enabled>
-      <property>
-        <name>Keystore Filename</name>
-      </property>
-      <property>
-        <name>Keystore Password</name>
-      </property>
-      <property>
-        <name>Keystore Type</name>
-      </property>
-      <property>
-        <name>Truststore Filename</name>
-        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
-      </property>
-      <property>
-        <name>Truststore Password</name>
-        <value>enc{3A31531B76B6395A72FB8BEB4C93E2040877D07C04FDAB5A84499B918BECEB77}</value>
-      </property>
-      <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
-      </property>
-      <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
-      </property>
-    </controllerService>
-  </controllerServices>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/flow_Site2SiteServer.xml b/conf/flow_Site2SiteServer.xml
deleted file mode 100644
index 213a3d6..0000000
--- a/conf/flow_Site2SiteServer.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<flowController>
-  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
-  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
-  <rootGroup>
-    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
-    <name>NiFi Flow</name>
-    <position x="0.0" y="0.0"/>
-    <comment/>
-    <processor>
-      <id>cd274fef-168a-486b-b21a-04ed17f981b7</id>
-      <name>LogAttribute</name>
-      <position x="2823.8107761867964" y="623.2524160253959"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.LogAttribute</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>0 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>Log Level</name>
-        <value>info</value>
-      </property>
-      <property>
-        <name>Log Payload</name>
-        <value>true</value>
-      </property>
-      <property>
-        <name>Attributes to Log</name>
-      </property>
-      <property>
-        <name>Attributes to Ignore</name>
-      </property>
-      <property>
-        <name>Log prefix</name>
-      </property>
-      <autoTerminatedRelationship>success</autoTerminatedRelationship>
-    </processor>
-    <processor>
-      <id>4fa35a7d-d1f0-44e4-87d7-7d69f0b78b7b</id>
-      <name>GenerateFlowFile</name>
-      <position x="2248.4411151522036" y="917.8589272756209"/>
-      <styles/>
-      <comment/>
-      <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-      <schedulingPeriod>1 sec</schedulingPeriod>
-      <penalizationPeriod>30 sec</penalizationPeriod>
-      <yieldPeriod>1 sec</yieldPeriod>
-      <bulletinLevel>WARN</bulletinLevel>
-      <lossTolerant>false</lossTolerant>
-      <scheduledState>RUNNING</scheduledState>
-      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-      <runDurationNanos>0</runDurationNanos>
-      <property>
-        <name>File Size</name>
-        <value>1024 kB</value>
-      </property>
-      <property>
-        <name>Batch Size</name>
-        <value>1</value>
-      </property>
-      <property>
-        <name>Data Format</name>
-        <value>Text</value>
-      </property>
-      <property>
-        <name>Unique FlowFiles</name>
-        <value>false</value>
-      </property>
-    </processor>
-    <inputPort>
-      <id>471deef6-2a6e-4a7d-912a-81cc17e3a204</id>
-      <name> From Node A</name>
-      <position x="2305.369919163486" y="646.0466623031645"/>
-      <comments/>
-      <scheduledState>RUNNING</scheduledState>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-    </inputPort>
-    <outputPort>
-      <id>75f88005-0a87-4fef-8320-6219cdbcf18b</id>
-      <name>To A</name>
-      <position x="2915.739181824911" y="1057.8803860295386"/>
-      <comments/>
-      <scheduledState>RUNNING</scheduledState>
-      <maxConcurrentTasks>1</maxConcurrentTasks>
-    </outputPort>
-    <label>
-      <id>2f0db43e-1ce0-49ab-96a5-459c285aff09</id>
-      <position x="2197.3693058093504" y="849.4395700448451"/>
-      <size height="286.5726013183594" width="1012.2957763671875"/>
-      <styles>
-        <style name="font-size">18px</style>
-      </styles>
-      <value>Generate Data that is pushed to Node A and made available to be pulled</value>
-    </label>
-    <connection>
-      <id>7f869898-3a93-4e28-a60c-064789870574</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>471deef6-2a6e-4a7d-912a-81cc17e3a204</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>INPUT_PORT</sourceType>
-      <destinationId>cd274fef-168a-486b-b21a-04ed17f981b7</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>PROCESSOR</destinationType>
-      <relationship/>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-    <connection>
-      <id>9dbc73f6-c827-4258-8bc7-06eb6a9b79d5</id>
-      <name/>
-      <bendPoints/>
-      <labelIndex>1</labelIndex>
-      <zIndex>0</zIndex>
-      <sourceId>4fa35a7d-d1f0-44e4-87d7-7d69f0b78b7b</sourceId>
-      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
-      <sourceType>PROCESSOR</sourceType>
-      <destinationId>75f88005-0a87-4fef-8320-6219cdbcf18b</destinationId>
-      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
-      <destinationType>OUTPUT_PORT</destinationType>
-      <relationship>success</relationship>
-      <maxWorkQueueSize>0</maxWorkQueueSize>
-      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
-      <flowFileExpiration>0 sec</flowFileExpiration>
-    </connection>
-  </rootGroup>
-  <controllerServices/>
-  <reportingTasks/>
-</flowController>
diff --git a/conf/minifi.properties b/conf/minifi.properties
index c6859b8..dd7eb7e 100644
--- a/conf/minifi.properties
+++ b/conf/minifi.properties
@@ -16,19 +16,6 @@
 # Core Properties #
 nifi.version=0.0.1
 nifi.flow.configuration.file=./conf/flow.yml
-nifi.flowcontroller.graceful.shutdown.period=10 sec
-nifi.flowservice.writedelay.interval=500 ms
 nifi.administrative.yield.duration=30 sec
 # If a component has no work to do (is "bored"), how long should we wait before checking again for work?
 nifi.bored.yield.duration=10 millis
-
-# Site to Site properties
-nifi.remote.input.socket.host=localhost
-nifi.remote.input.socket.port=10000
-nifi.remote.input.secure=false
-
-# MiNiFi Server for Command Control
-nifi.server.name=localhost
-nifi.server.port=9000
-nifi.server.report.interval=1000 ms
-
diff --git a/main/MiNiFiMain.cpp b/main/MiNiFiMain.cpp
index bf394b7..21ed046 100644
--- a/main/MiNiFiMain.cpp
+++ b/main/MiNiFiMain.cpp
@@ -65,19 +65,6 @@
 
 int main(int argc, char **argv)
 {
-	try
-	{
-		std::vector<spdlog::sink_ptr> sinks;
-		sinks.push_back(std::make_shared<spdlog::sinks::stdout_sink_st>());
-		sinks.push_back(std::make_shared<spdlog::sinks::daily_file_sink_st>("logfile", "log", 23, 59));
-		auto combined_logger = std::make_shared<spdlog::logger>("name", begin(sinks), end(sinks));
-		spdlog::register_logger(combined_logger);
-	}
-	catch (const spdlog::spdlog_ex& ex)
-	{
-		std::cout << "Log failed: " << ex.what() << std::endl;
-	}
-
 	Logger *logger = Logger::getLogger();
 	logger->setLogLevel(info);
 
diff --git a/src/FlowController.cpp b/src/FlowController.cpp
index 8ac76fb..2f16f47 100644
--- a/src/FlowController.cpp
+++ b/src/FlowController.cpp
@@ -44,7 +44,6 @@
 	_initialized = false;
 	_root = NULL;
 	_logger = Logger::getLogger();
-	_protocol = new FlowControlProtocol(this);
 
 	// NiFi config properties
 	_configure = Configure::getConfigure();
@@ -813,7 +812,6 @@
 
 	processor = (Processor *) port;
 	port->setDirection(direction);
-	port->setTimeOut(parent->getTimeOut());
 	port->setTransmitting(true);
 	processor->setYieldPeriodMsec(parent->getYieldPeriodMsec());
 	processor->initialize();
@@ -1182,7 +1180,6 @@
 			if (this->_root)
 				this->_root->startProcessing(&this->_timerScheduler);
 			_running = true;
-			this->_protocol->start();
 		}
 		return true;
 	}
