diff --git a/.gitignore b/.gitignore
index 0a82084e374dae3a89edaf35256c95f4a8942508..80015669ef92528887eaa9f605f1aeb0de8a6e38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -143,3 +143,5 @@ _Pvt_Extensions
 /Cpp/test.exe
 /Cpp/lib/driver_header/spcm_win64_msvcpp_symbols.txt
 /Cpp/lib/spcm_win64_msvcpp_symbols.txt
+/Cpp/out
+/Python/data
diff --git a/Cpp/CMakeLists.txt b/Cpp/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..98229d057c798fa9c0f188febba7bc4ef508b47f
--- /dev/null
+++ b/Cpp/CMakeLists.txt
@@ -0,0 +1,33 @@
+# CMakeList.txt : CMake project for Cpp, include source and define
+# project specific logic here.
+#
+cmake_minimum_required (VERSION 3.20)
+
+# Enable Hot Reload for MSVC compilers if supported.
+if (POLICY CMP0141)
+  cmake_policy(SET CMP0141 NEW)
+  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
+endif()
+
+set(CMAKE_CXX_STANDARD 20)
+
+project ("main")
+
+add_library(wfmLib "")
+add_library(AWGLib "")
+add_subdirectory(lib)
+include_directories(lib/driver_header)
+
+set(MAINHEADERS
+)
+set(MAINSOURCES
+    run.cpp
+)
+
+add_executable(main ${MAINHEADERS} ${MAINSOURCES})
+
+set(LIBS
+    wfmLib
+    AWGLib
+)
+target_link_libraries(main ${LIBS})
\ No newline at end of file
diff --git a/Cpp/CMakePresets.json b/Cpp/CMakePresets.json
new file mode 100644
index 0000000000000000000000000000000000000000..f4bc98b32ad0d154a4c3f2e47caa362d10ea8069
--- /dev/null
+++ b/Cpp/CMakePresets.json
@@ -0,0 +1,101 @@
+{
+    "version": 3,
+    "configurePresets": [
+        {
+            "name": "windows-base",
+            "hidden": true,
+            "generator": "Ninja",
+            "binaryDir": "${sourceDir}/out/build/${presetName}",
+            "installDir": "${sourceDir}/out/install/${presetName}",
+            "cacheVariables": {
+                "CMAKE_C_COMPILER": "cl.exe",
+                "CMAKE_CXX_COMPILER": "cl.exe"
+            },
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "x64-debug",
+            "displayName": "x64 Debug",
+            "inherits": "windows-base",
+            "architecture": {
+                "value": "x64",
+                "strategy": "external"
+            },
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug"
+            }
+        },
+        {
+            "name": "x64-release",
+            "displayName": "x64 Release",
+            "inherits": "x64-debug",
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Release"
+            }
+        },
+        {
+            "name": "x86-debug",
+            "displayName": "x86 Debug",
+            "inherits": "windows-base",
+            "architecture": {
+                "value": "x86",
+                "strategy": "external"
+            },
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug"
+            }
+        },
+        {
+            "name": "x86-release",
+            "displayName": "x86 Release",
+            "inherits": "x86-debug",
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Release"
+            }
+        },
+        {
+            "name": "linux-debug",
+            "displayName": "Linux Debug",
+            "generator": "Ninja",
+            "binaryDir": "${sourceDir}/out/build/${presetName}",
+            "installDir": "${sourceDir}/out/install/${presetName}",
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug"
+            },
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            },
+            "vendor": {
+                "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
+                    "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
+                }
+            }
+        },
+        {
+            "name": "macos-debug",
+            "displayName": "macOS Debug",
+            "generator": "Ninja",
+            "binaryDir": "${sourceDir}/out/build/${presetName}",
+            "installDir": "${sourceDir}/out/install/${presetName}",
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug"
+            },
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Darwin"
+            },
+            "vendor": {
+                "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
+                    "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
+                }
+            }
+        }
+    ]
+}
diff --git a/Cpp/Cpp.sln b/Cpp/Cpp.sln
deleted file mode 100644
index fc0b9f6637682a85babf1a29664cc6795b4d7429..0000000000000000000000000000000000000000
--- a/Cpp/Cpp.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.7.34024.191
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Cpp", "Cpp.vcxproj", "{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Debug|x64.ActiveCfg = Debug|x64
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Debug|x64.Build.0 = Debug|x64
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Debug|x86.ActiveCfg = Debug|Win32
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Debug|x86.Build.0 = Debug|Win32
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Release|x64.ActiveCfg = Release|x64
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Release|x64.Build.0 = Release|x64
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Release|x86.ActiveCfg = Release|Win32
-		{1CCAB617-6DEE-4B9D-A6D1-F3929CE9E0C9}.Release|x86.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {B586227A-0AA5-4AC8-8081-A18EC4A283FC}
-	EndGlobalSection
-EndGlobal
diff --git a/Cpp/Cpp.vcxproj b/Cpp/Cpp.vcxproj
deleted file mode 100644
index 9b8df2873bd6fc0ffcf29622ed9685e8b60f62d4..0000000000000000000000000000000000000000
--- a/Cpp/Cpp.vcxproj
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <VCProjectVersion>17.0</VCProjectVersion>
-    <Keyword>Win32Proj</Keyword>
-    <ProjectGuid>{1ccab617-6dee-4b9d-a6d1-f3929ce9e0c9}</ProjectGuid>
-    <RootNamespace>Cpp</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v143</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="Shared">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRuleSet>NativeRecommendedRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ConformanceMode>true</ConformanceMode>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ConformanceMode>true</ConformanceMode>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ConformanceMode>true</ConformanceMode>
-      <EnablePREfast>true</EnablePREfast>
-      <LanguageStandard>stdcpp20</LanguageStandard>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalLibraryDirectories>.\lib\driver_header;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>spcm_win64_msvcpp.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ConformanceMode>true</ConformanceMode>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="lib\AWG.cpp" />
-    <ClCompile Include="run.cpp" />
-    <ClCompile Include="lib\Waveform.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="lib\AWG.h" />
-    <ClInclude Include="lib\driver_header\dlltyp.h" />
-    <ClInclude Include="lib\driver_header\errors.h" />
-    <ClInclude Include="lib\driver_header\regs.h" />
-    <ClInclude Include="lib\driver_header\spcerr.h" />
-    <ClInclude Include="lib\driver_header\spcm_drv.h" />
-    <ClInclude Include="lib\Waveform.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="cpp.hint" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/Cpp/Cpp.vcxproj.filters b/Cpp/Cpp.vcxproj.filters
deleted file mode 100644
index ca076df3714897cf0e0125792715c9f3d58f81de..0000000000000000000000000000000000000000
--- a/Cpp/Cpp.vcxproj.filters
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="run.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="lib\AWG.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="lib\Waveform.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="lib\AWG.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\driver_header\dlltyp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\driver_header\errors.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\driver_header\regs.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\driver_header\spcerr.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\driver_header\spcm_drv.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="lib\Waveform.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="cpp.hint" />
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/Cpp/cpp.hint b/Cpp/cpp.hint
deleted file mode 100644
index 155867e17bb32ef3fec900aca26f58c5be394448..0000000000000000000000000000000000000000
--- a/Cpp/cpp.hint
+++ /dev/null
@@ -1,6 +0,0 @@
-// Hint files help the Visual Studio IDE interpret Visual C++ identifiers
-// such as names of functions and macros.
-// For more information see https://go.microsoft.com/fwlink/?linkid=865984
-#define drv_handle
-#define int32
-#define int64
diff --git a/Cpp/lib/AWG.cpp b/Cpp/lib/AWG.cpp
index 5d97ded3aadeb4df2f54890bb0cd8153097aad21..c251fb10355f7c6b74ba614343adb69d472b4bc9 100644
--- a/Cpp/lib/AWG.cpp
+++ b/Cpp/lib/AWG.cpp
@@ -14,6 +14,8 @@ AWG::AWG() noexcept {
 
 AWG::~AWG() {
 	// TODO: do this
+	if (this->isOpen()) { this->close(); }
+	this->pCardHandle = nullptr;
 	return;
 }
 
@@ -76,7 +78,7 @@ void AWG::open(int openIndex) {
 	 * @param openIndex card index, 0 or 1
 	 */
 	if (!this->isOpen()) {
-		std::cout << "card already opened" << std::endl;
+		std::cout << "card open failed" << std::endl;
 		return;
 	}
 
diff --git a/Cpp/lib/CMakeLists.txt b/Cpp/lib/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..28e506e71057cd04faf9ac059d67af5fc6b5affc
--- /dev/null
+++ b/Cpp/lib/CMakeLists.txt
@@ -0,0 +1,22 @@
+target_sources(wfmLib
+	PRIVATE
+		waveform.cpp
+	PUBLIC
+		waveform.h
+)
+add_library(driverLib STATIC IMPORTED)
+set_target_properties(driverLib PROPERTIES
+    IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/driver_header/spcm_win64_msvcpp.lib"
+    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/driver_header"
+)
+target_link_libraries(AWGLib PUBLIC driverLib)
+target_include_directories(wfmLib PUBLIC ${CMAKE_CURRENT_LIST_DIR})
+
+target_sources(AWGLib
+	PRIVATE
+		AWG.cpp
+	PUBLIC
+		AWG.h
+)
+target_include_directories(AWGLib PUBLIC ${CMAKE_CURRENT_LIST_DIR})
+
diff --git a/Cpp/lib/Waveform.cpp b/Cpp/lib/Waveform.cpp
index 98d863b6815c210aaa0c6342b081fde61a5ae6d0..2be97e0a951c307910f72b1f17897df82abfe766 100644
--- a/Cpp/lib/Waveform.cpp
+++ b/Cpp/lib/Waveform.cpp
@@ -1 +1,6 @@
 #include "Waveform.h"
+
+
+Waveform::Waveform() {
+	this->freqRes = 0;
+}
diff --git a/Cpp/lib/Waveform.h b/Cpp/lib/Waveform.h
index 2fcf8ba517437b4a4ead4576a96994cfd90dcda7..eb351928a4832f0b151c7fdefe0843875750c5e6 100644
--- a/Cpp/lib/Waveform.h
+++ b/Cpp/lib/Waveform.h
@@ -3,5 +3,7 @@ class Waveform {
 	public:
 	int freqRes;	 // frequency resolution
 	int samplingRate; // sampling rate
+
+	Waveform();
 };
 
diff --git a/Cpp/lib/driver_header/SpcStdNT.lib b/Cpp/lib/driver_header/SpcStdNT.lib
deleted file mode 100644
index 50f6693e5246032570317a8b12db430d42499262..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/SpcStdNT.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spclib_bcc.lib b/Cpp/lib/driver_header/spclib_bcc.lib
deleted file mode 100644
index fe98a9d8b0a8f32f9a7d839251502e2fb362778a..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spclib_bcc.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spcm_win32_bcppb.lib b/Cpp/lib/driver_header/spcm_win32_bcppb.lib
deleted file mode 100644
index 2f022cdce6c5c1bb719ffbe9b8aca3821eba47f1..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spcm_win32_bcppb.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spcm_win32_cvi.lib b/Cpp/lib/driver_header/spcm_win32_cvi.lib
deleted file mode 100644
index db3b2cd1fdaba87b14e2229f07063d7f8f34600b..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spcm_win32_cvi.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spcm_win32_msvcpp.lib b/Cpp/lib/driver_header/spcm_win32_msvcpp.lib
deleted file mode 100644
index 33b1f5db3cf4072985782304eaf0e473598e706a..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spcm_win32_msvcpp.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spcm_win64.dll b/Cpp/lib/driver_header/spcm_win64.dll
new file mode 100644
index 0000000000000000000000000000000000000000..0cfea9ce92b6722bad35ce9a6613b938586a7898
Binary files /dev/null and b/Cpp/lib/driver_header/spcm_win64.dll differ
diff --git a/Cpp/lib/driver_header/spectrum.h b/Cpp/lib/driver_header/spectrum.h
deleted file mode 100644
index 77ca4fb47d8439b1b7707cd8010388c578b66b90..0000000000000000000000000000000000000000
--- a/Cpp/lib/driver_header/spectrum.h
+++ /dev/null
@@ -1,11 +0,0 @@
-HEAD  SpcInitPCIBoards  (int16 *pnCount, int16 *pnPCIVersion);
-HEAD  SpcInitBoard      (int16 nNr, int16 nTyp);
-HEAD  SpcSetParam       (int16 nNr, int32 lReg, int32 lValue);
-HEAD  SpcGetParam       (int16 nNr, int32 lReg, int32 *plValue);
-HEAD  SpcGetData        (int16 nNr, int16 nCh, int32 lStart, int32 lLen, dataptr pvData);
-HEAD  SpcSetData        (int16 nNr, int16 nCh, int32 lStart, int32 lLen, dataptr pvData);
-HEAD  SpcGetVersionInfo (char *pszBuffer, int nBufferLen);
-
-// these functions are only needed under 64 bit Linux to set FIFO adresses
-HEAD  SpcSetAdr        (int16 nNr, int32 lReg, void*  pvAdr);
-HEAD  SpcGetAdr        (int16 nNr, int32 lReg, void** ppvAdr);
diff --git a/Cpp/lib/driver_header/spectrum.lib b/Cpp/lib/driver_header/spectrum.lib
deleted file mode 100644
index ac4873d485442d2a30c930fb1f86c29d5eae0528..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spectrum.lib and /dev/null differ
diff --git a/Cpp/lib/driver_header/spectrum_comp.lib b/Cpp/lib/driver_header/spectrum_comp.lib
deleted file mode 100644
index 881e1c83ab1b5879c5d1de215b399b95a46c322b..0000000000000000000000000000000000000000
Binary files a/Cpp/lib/driver_header/spectrum_comp.lib and /dev/null differ
diff --git a/Cpp/run.cpp b/Cpp/run.cpp
index 52e18dd8187d9988f735cff8931710bb24bb8c93..239c8bf81041a63d5433176143b052cc2c8d36ab 100644
--- a/Cpp/run.cpp
+++ b/Cpp/run.cpp
@@ -1,24 +1,12 @@
-// Cpp.cpp : This file contains the 'main' function. Program execution begins and ends there.
-//
-
-#include <iostream>
-#include <set>
+#include <iostream>
 #include "lib/AWG.h"
+#include "lib/waveform.h"
 
 int main()
 {
-	auto awg = AWG();
+	auto wfm = Waveform::Waveform();
+	auto awg = AWG::AWG();
 	awg.open(0);
-	//std::cout << b << std::endl;
+	std::cout << wfm.freqRes << std::endl;
+	return 0;
 }
-
-// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
-// Debug program: F5 or Debug > Start Debugging menu
-
-// Tips for Getting Started: 
-//   1. Use the Solution Explorer window to add/manage files
-//   2. Use the Team Explorer window to connect to source control
-//   3. Use the Output window to see build output and other messages
-//   4. Use the Error List window to view errors
-//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
-//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file