diff --git a/b b/b
index a77e05cb66dba18688565911354234c3ff36e0e9..b819b9b8792adc4b207fb1a01855dbb2ac25e4a0 160000
--- a/b
+++ b/b
@@ -1 +1 @@
-Subproject commit a77e05cb66dba18688565911354234c3ff36e0e9
+Subproject commit b819b9b8792adc4b207fb1a01855dbb2ac25e4a0
diff --git a/dox/c++_scrap b/dox/c++_scrap
new file mode 100644
index 0000000000000000000000000000000000000000..9d666a1fcc7d38c10be6ae3b5f1ed828e1a6ee7f
--- /dev/null
+++ b/dox/c++_scrap
@@ -0,0 +1,80 @@
+//open cam
+    // if ( VmbErrorSuccess == (* iter)->Open( VmbAccessModeFull ) )
+    // {
+    //  qDebug() << " Camera opened ";
+    //    // emit()
+    // }
+    // else
+    // {
+    //    // cameras.
+    //  qDebug() << "Coudn't open camera";
+    // }
+
+// (*iter)->AcquireSingleImage()
+//        (*iter)->GetFeatureByName
+//        (*iter)->GetFeatures
+//        (*iter)->AcquireMultipleImages()
+//        (*iter)->StartContinuousImageAcquisition()
+//        (*iter)->StartCapture()
+//        // (*iter)->GetPayloadSize(VmbUint32_t &nPayloadSize)
+  // (*iter)->GetInterface(InterfacePtr &pInterface)
+  // (*iter)->LoadSettings()
+  // (*iter)->SaveSettings(const VmbFilePathChar_t *filePath)
+
+
+
+        // std::string str;
+        // (*iter)->GetID( str );
+        // camInfo << QString::fromStdString(str);
+
+
+// auto mf = std::bind(&Core::getCamInfo, this, std::placeholders::_1); //weird syntax for calling non-static memberfunction in for_each...
+        // std::for_each( cameras.begin(), cameras.end(), mf );
+
+###############################
+CONSOLE
+
+if it takes userinput interactively, create threads to not-block the main thread eventloop
+-> connect via signal slots
+-------------------------------
+Style / Naming convetions:
+> use camelCase!
+
+###############################
+on Qthread
+https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/
+###############################
+https://stackoverflow.com/questions/7543313/how-to-handle-keypress-events-in-a-qt-console-application#18889631
+void initTermios(int echo)
+{
+  tcgetattr(0, &oldSettings); /* grab old terminal i/o settings */
+  newSettings = oldSettings; /* make new settings same as old settings */
+  newSettings.c_lflag &= ~ICANON; /* disable buffered i/o */
+  newSettings.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
+  tcsetattr(0, TCSANOW, &newSettings); /* use these new terminal i/o settings now */
+}
+###############################
+
+// usleep(500000); // sleep 0.5s
+
+# use Qt wrapper for stdout/stdin/stderr, for better QString handling.
+# > not working with userinput, cause not flushed properly...
+QTextStream qout(stdout); //2d make global to access from anywhere
+    QTextStream qin(stdin);
+    qin.skipWhiteSpace(); // Remove white characters that interrupt
+    QTextStream qerr(stderr);
+
+    qout << "Please enter your name: " << endl;
+    qout.flush(); // clears the keyboard buffer
+
+    QString inpu = qin.readLine();
+    qout << "u typed " << inpu.toLower() << endl;
+
+    return 3;
+
+###############################
+eventfilter
+evt->key()
+evt->modifiers()
+
+pushButton->installEventFilter(keyPressEater);
diff --git a/dox/cam_features_reference.pdf b/dox/cam_features_reference.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..0999cbe7c4cdd581d3f782c040fb3983feb69f5e
--- /dev/null
+++ b/dox/cam_features_reference.pdf
@@ -0,0 +1 @@
+../a/hardware/alvium_features_reference.pdf
\ No newline at end of file
diff --git a/dox/cam_spec.pdf b/dox/cam_spec.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..6dae3bb726666f3f6d9a98fe04daab3cd5c1e2a6
--- /dev/null
+++ b/dox/cam_spec.pdf
@@ -0,0 +1 @@
+../a/hardware/alvium_spec.pdf
\ No newline at end of file
diff --git a/dox/cam_user_guide.pdf b/dox/cam_user_guide.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..30d05bb94dfcdd5e1fef42118c7f3be77303632a
--- /dev/null
+++ b/dox/cam_user_guide.pdf
@@ -0,0 +1 @@
+../../a/hardware/alvium_g1_user_guide.pdf
\ No newline at end of file
diff --git a/dox/notes_B b/dox/notes_B
index a48007ba699a2a7af5979097ce339e4e036e10fa..b52b7e2e6b8dda0b47877289b9ef2f9f2bc18d70 100644
--- a/dox/notes_B
+++ b/dox/notes_B
@@ -9,21 +9,18 @@ Does
 use opencv to convert raw cam images into JPEG pixel format
 ###############################
 
-map cam -> MAC -> IP -> ID -> name
-	cam1 000A4708ED3F 172.18.227.210 04ytr allied-alviumg1-240c-04ytr.idiv.de
-	cam2 000A471C0C9D 172.18.227.211 04ytp allied-alviumg1-240c-04ytp.idiv.de
-	cam3 000A47372777 172.18.225.164 04ytn allied-alviumg1-240c-04ytn.idiv.de
-	cam4 000A471D2A66 172.18.227.213 04ytm allied-alviumg1-240c-04ytm.idiv.de
-	cam5 000A471D208D 172.18.225.129 04ytt allied-alviumg1-240c-04ytt.idiv.de
-	cam6 000A47139EA6
-
-## connect VM
+map cam -> MAC -> IP -> name (contains ID)
+	camtron1 000A4708ED3F 172.18.227.210 allied-alviumg1-240c-04ytr.idiv.de
+	camtron2 000A471C0C9D 172.18.227.211 allied-alviumg1-240c-04ytp.idiv.de
+	camtron3 000A47372777 172.18.225.164 allied-alviumg1-240c-04ytn.idiv.de
+	camtron4 000A471D2A66 172.18.227.213 allied-alviumg1-240c-04ytm.idiv.de
+	camtron5 000A471D208D 172.18.225.129 allied-alviumg1-240c-04ytt.idiv.de
+	camtron6 000A47139EA6 172.18.227.215 allied-alviumg1-240c-04ytv.idiv.de
+
+## connect VM + setup ssh
 ssh kr69sugu@idivtibcam01.usr.idiv.de
 	- see `cmds "login ssh without password"` for config
 
-
-#old vm
-	#tibcamtrack.idiv.de (172.18.225.181)
 #?? WS ???
 	#idivlabo2KARL.idiv.de (172.18.226.44) ?
 
@@ -42,9 +39,9 @@ ssh kr69sugu@idivtibcam01.usr.idiv.de
 	> see Vimba_installation_under_Linux.pdf
 	> unpack Vimba SDK
 	> tar -xzf ./Vimba.tgz
+		. cti/SetGenTLPath.sh
 	> install TL
 		-> sa VimbaX/doc/VimbaX_ReleaseNotes/GigETL.html
-		. SetGenTLPath.sh
 		sudo VimbaGigETL_Install.sh #add api to path
 
 ## All APIs cover the following functions:
diff --git a/dox/todo_ct b/dox/todo_ct
index 78545c217930a2dd1a56bc592f0bf54ade43bbd7..9e33d300e14bbdc746d771cd52e30c8bac66717a 100644
--- a/dox/todo_ct
+++ b/dox/todo_ct
@@ -16,11 +16,34 @@ B) recorder - camera produces frames and timestamps
 ============================
 	> wait and detect cams
 	> produce frames & timestamps
-	> build GUI
-		--> Q: might a console app be feasable??
 ============================
+	> new architecture: console app (later: gui app) + Core.
+	CONSOLE APP:
+		in extra thread to not block main thread!
+		listen to user keys
+
+	CORE APP
+			functions / args:
+			> out_dir:
+				 parse dir arg and create it if it doesnt exist >> finish it / with proper user in/	output >> or cancel if it doesnt exist
+				 	>> EASIER: + no userinput which could complicate GUI app later...
+			> list cameras:
+			> store/load cam settings
+			> calibrate
+			> record
+			> stop recording
+		> consider using app settings in a json-file / QSettings
+			> cam mappings (IP/MAC/ID)
+			> out_dir
+
+	GUI APP:
+		> build GUI
+		> ... parse output for -LISTCAMERAS- and put into tablewidget
+
+===============================
 	> get pix, using
-		- laptop
+		- laptop - direct connection
+		- laptop - local network
 		- virtual machine
 	> get video via vimbax-SDK
 	> cam calibration (Use Viewer? Or own SW?)
@@ -107,6 +130,9 @@ BACK-BURNER 2D
 
 Done
 #######################
+> start implementing new arch
+	> console app. thread. signal-slot connections.
+> backup old tibcamtrack VM
 > get video in VV
 > connect VM. ssh and rdp
 > sort ct a bit: