diff --git a/CMakeLists.txt b/CMakeLists.txt
index b6f8cd874bd6ccb3b43bcfe992e589fb78b63101..c30dfb2dae90c373e710132efef57313c5b4f366 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,20 +1,6 @@
 cmake_minimum_required(VERSION 3.14)
 project (SyncTERM C)
-include("FetchContent")
-
-FetchContent_Declare(
-	XPDevPlus
-	GIT_REPOSITORY https://gitlab.synchro.net/Deuce/xpdevplus.git
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/xpdevplus
-)
-FetchContent_MakeAvailable(XPDevPlus)
-
-FetchContent_Declare(
-	CryptlibBuild
-	GIT_REPOSITORY https://gitlab.synchro.net/Deuce/cryptlib.git
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/cryptlib
-)
-FetchContent_MakeAvailable(CryptlibBuild)
+add_subdirectory(src)
 
 # CPack stuff...
 set(CPACK_PACKAGE_NAME SyncTERM)
@@ -34,56 +20,11 @@ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Stephen Hurd")
 INCLUDE(CPack)
 ######
 
-set(SOURCE
-	bbslist.c
-	uifcinit.c
-	fonts.c
-	rlogin.c
-	telnet_io.c
-	conn_telnet.c
-	conn.c
-	term.c
-	window.c
-	menu.c
-	ssh.c
-	st_crypt.c
-	syncterm.c
-	telnet.c
-	telnets.c
-	ooii.c
-	ooii_logons.c
-	ooii_cmenus.c
-	ooii_bmenus.c
-	ooii_sounds.c
-	modem.c
-	xmodem.c
-	zmodem.c
-	conn_pty.c
-	ripper.c
-)
-
-configure_file(syncterm.man.in syncterm.man)
+configure_file(docs/syncterm.man.in syncterm.man)
 file(ARCHIVE_CREATE OUTPUT syncterm.1.gz FORMAT raw COMPRESSION GZip PATHS syncterm.man)
-add_executable(syncterm ${SOURCE})
-target_link_libraries(syncterm cryptlib xpdevplus)
-target_include_directories(syncterm PRIVATE ${CMAKE_BINARY_DIR})
-target_compile_definitions(syncterm PRIVATE STATIC_CRYPTLIB)
-
-check_library_exists(util forkpty "" HAS_FORKPTY)
-if(HAS_FORKPTY)
-	target_link_libraries(syncterm util)
-else()
-	target_compile_definitions(syncterm PRIVATE NEEDS_FORKPTY)
-endif()
-
-check_library_exists(c daemon "" HAS_DAEMON)
-if(NOT HAS_FORKPTY)
-	target_compile_definitions(syncterm PRIVATE NEEDS_DAEMON)
-endif()
 
-install(TARGETS syncterm RUNTIME)
 if(UNIX)
-	install(FILES syncterm.desktop DESTINATION share/applications)
-	install(FILES syncterm.png DESTINATION share/icons/hicolor/64x64/apps)
+	install(FILES data/install/syncterm.desktop DESTINATION share/applications)
+	install(FILES data/install/syncterm.png DESTINATION share/icons/hicolor/64x64/apps)
 	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncterm.1.gz DESTINATION man/man1)
 endif()
diff --git a/cmake/TC-mingw.cmake b/cmake/TC-mingw.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..f7db8354147c9c8e4641467e95dcc6e0167df314
--- /dev/null
+++ b/cmake/TC-mingw.cmake
@@ -0,0 +1,17 @@
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+set(CMAKE_C_COMPILER   mingw32-gcc)
+set(CMAKE_CXX_COMPILER mingw32-g++)
+
+# where is the target environment located
+set(CMAKE_FIND_ROOT_PATH  /usr/local/mingw32)
+
+# search headers and libraries in the target environment
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+#
+set(CROSS_MAKE_ENV AR=mingw32-ar RANLIB=mingw32-ranlib RELEASE=1 CC=mingw32-gcc CXX=mingw32-g++ WINDRES=mingw32-windres)
diff --git a/AmigaFonts/CGTimes.font b/data/AmigaFonts/CGTimes.font
similarity index 100%
rename from AmigaFonts/CGTimes.font
rename to data/AmigaFonts/CGTimes.font
diff --git a/AmigaFonts/CGTriumvirate.font b/data/AmigaFonts/CGTriumvirate.font
similarity index 100%
rename from AmigaFonts/CGTriumvirate.font
rename to data/AmigaFonts/CGTriumvirate.font
diff --git a/AmigaFonts/LetterGothic.font b/data/AmigaFonts/LetterGothic.font
similarity index 100%
rename from AmigaFonts/LetterGothic.font
rename to data/AmigaFonts/LetterGothic.font
diff --git a/AmigaFonts/courier.font b/data/AmigaFonts/courier.font
similarity index 100%
rename from AmigaFonts/courier.font
rename to data/AmigaFonts/courier.font
diff --git a/AmigaFonts/courier/11 b/data/AmigaFonts/courier/11
similarity index 100%
rename from AmigaFonts/courier/11
rename to data/AmigaFonts/courier/11
diff --git a/AmigaFonts/courier/13 b/data/AmigaFonts/courier/13
similarity index 100%
rename from AmigaFonts/courier/13
rename to data/AmigaFonts/courier/13
diff --git a/AmigaFonts/courier/15 b/data/AmigaFonts/courier/15
similarity index 100%
rename from AmigaFonts/courier/15
rename to data/AmigaFonts/courier/15
diff --git a/AmigaFonts/courier/18 b/data/AmigaFonts/courier/18
similarity index 100%
rename from AmigaFonts/courier/18
rename to data/AmigaFonts/courier/18
diff --git a/AmigaFonts/courier/24 b/data/AmigaFonts/courier/24
similarity index 100%
rename from AmigaFonts/courier/24
rename to data/AmigaFonts/courier/24
diff --git a/AmigaFonts/diamond.font b/data/AmigaFonts/diamond.font
similarity index 100%
rename from AmigaFonts/diamond.font
rename to data/AmigaFonts/diamond.font
diff --git a/AmigaFonts/diamond/12 b/data/AmigaFonts/diamond/12
similarity index 100%
rename from AmigaFonts/diamond/12
rename to data/AmigaFonts/diamond/12
diff --git a/AmigaFonts/diamond/20 b/data/AmigaFonts/diamond/20
similarity index 100%
rename from AmigaFonts/diamond/20
rename to data/AmigaFonts/diamond/20
diff --git a/AmigaFonts/emerald.font b/data/AmigaFonts/emerald.font
similarity index 100%
rename from AmigaFonts/emerald.font
rename to data/AmigaFonts/emerald.font
diff --git a/AmigaFonts/emerald/17 b/data/AmigaFonts/emerald/17
similarity index 100%
rename from AmigaFonts/emerald/17
rename to data/AmigaFonts/emerald/17
diff --git a/AmigaFonts/emerald/20 b/data/AmigaFonts/emerald/20
similarity index 100%
rename from AmigaFonts/emerald/20
rename to data/AmigaFonts/emerald/20
diff --git a/AmigaFonts/garnet.font b/data/AmigaFonts/garnet.font
similarity index 100%
rename from AmigaFonts/garnet.font
rename to data/AmigaFonts/garnet.font
diff --git a/AmigaFonts/garnet/16 b/data/AmigaFonts/garnet/16
similarity index 100%
rename from AmigaFonts/garnet/16
rename to data/AmigaFonts/garnet/16
diff --git a/AmigaFonts/garnet/9 b/data/AmigaFonts/garnet/9
similarity index 100%
rename from AmigaFonts/garnet/9
rename to data/AmigaFonts/garnet/9
diff --git a/AmigaFonts/helvetica.font b/data/AmigaFonts/helvetica.font
similarity index 100%
rename from AmigaFonts/helvetica.font
rename to data/AmigaFonts/helvetica.font
diff --git a/AmigaFonts/helvetica/11 b/data/AmigaFonts/helvetica/11
similarity index 100%
rename from AmigaFonts/helvetica/11
rename to data/AmigaFonts/helvetica/11
diff --git a/AmigaFonts/helvetica/13 b/data/AmigaFonts/helvetica/13
similarity index 100%
rename from AmigaFonts/helvetica/13
rename to data/AmigaFonts/helvetica/13
diff --git a/AmigaFonts/helvetica/15 b/data/AmigaFonts/helvetica/15
similarity index 100%
rename from AmigaFonts/helvetica/15
rename to data/AmigaFonts/helvetica/15
diff --git a/AmigaFonts/helvetica/18 b/data/AmigaFonts/helvetica/18
similarity index 100%
rename from AmigaFonts/helvetica/18
rename to data/AmigaFonts/helvetica/18
diff --git a/AmigaFonts/helvetica/24 b/data/AmigaFonts/helvetica/24
similarity index 100%
rename from AmigaFonts/helvetica/24
rename to data/AmigaFonts/helvetica/24
diff --git a/AmigaFonts/helvetica/9 b/data/AmigaFonts/helvetica/9
similarity index 100%
rename from AmigaFonts/helvetica/9
rename to data/AmigaFonts/helvetica/9
diff --git a/AmigaFonts/opal.font b/data/AmigaFonts/opal.font
similarity index 100%
rename from AmigaFonts/opal.font
rename to data/AmigaFonts/opal.font
diff --git a/AmigaFonts/opal/12 b/data/AmigaFonts/opal/12
similarity index 100%
rename from AmigaFonts/opal/12
rename to data/AmigaFonts/opal/12
diff --git a/AmigaFonts/opal/9 b/data/AmigaFonts/opal/9
similarity index 100%
rename from AmigaFonts/opal/9
rename to data/AmigaFonts/opal/9
diff --git a/AmigaFonts/pearl.font b/data/AmigaFonts/pearl.font
similarity index 100%
rename from AmigaFonts/pearl.font
rename to data/AmigaFonts/pearl.font
diff --git a/AmigaFonts/pearl/8 b/data/AmigaFonts/pearl/8
similarity index 100%
rename from AmigaFonts/pearl/8
rename to data/AmigaFonts/pearl/8
diff --git a/AmigaFonts/ruby.font b/data/AmigaFonts/ruby.font
similarity index 100%
rename from AmigaFonts/ruby.font
rename to data/AmigaFonts/ruby.font
diff --git a/AmigaFonts/ruby/12 b/data/AmigaFonts/ruby/12
similarity index 100%
rename from AmigaFonts/ruby/12
rename to data/AmigaFonts/ruby/12
diff --git a/AmigaFonts/ruby/15 b/data/AmigaFonts/ruby/15
similarity index 100%
rename from AmigaFonts/ruby/15
rename to data/AmigaFonts/ruby/15
diff --git a/AmigaFonts/ruby/8 b/data/AmigaFonts/ruby/8
similarity index 100%
rename from AmigaFonts/ruby/8
rename to data/AmigaFonts/ruby/8
diff --git a/AmigaFonts/sapphire.font b/data/AmigaFonts/sapphire.font
similarity index 100%
rename from AmigaFonts/sapphire.font
rename to data/AmigaFonts/sapphire.font
diff --git a/AmigaFonts/sapphire/14 b/data/AmigaFonts/sapphire/14
similarity index 100%
rename from AmigaFonts/sapphire/14
rename to data/AmigaFonts/sapphire/14
diff --git a/AmigaFonts/sapphire/19 b/data/AmigaFonts/sapphire/19
similarity index 100%
rename from AmigaFonts/sapphire/19
rename to data/AmigaFonts/sapphire/19
diff --git a/AmigaFonts/times.font b/data/AmigaFonts/times.font
similarity index 100%
rename from AmigaFonts/times.font
rename to data/AmigaFonts/times.font
diff --git a/AmigaFonts/times/11 b/data/AmigaFonts/times/11
similarity index 100%
rename from AmigaFonts/times/11
rename to data/AmigaFonts/times/11
diff --git a/AmigaFonts/times/13 b/data/AmigaFonts/times/13
similarity index 100%
rename from AmigaFonts/times/13
rename to data/AmigaFonts/times/13
diff --git a/AmigaFonts/times/15 b/data/AmigaFonts/times/15
similarity index 100%
rename from AmigaFonts/times/15
rename to data/AmigaFonts/times/15
diff --git a/AmigaFonts/times/18 b/data/AmigaFonts/times/18
similarity index 100%
rename from AmigaFonts/times/18
rename to data/AmigaFonts/times/18
diff --git a/AmigaFonts/times/24 b/data/AmigaFonts/times/24
similarity index 100%
rename from AmigaFonts/times/24
rename to data/AmigaFonts/times/24
diff --git a/AmigaFonts/topaz.font b/data/AmigaFonts/topaz.font
similarity index 100%
rename from AmigaFonts/topaz.font
rename to data/AmigaFonts/topaz.font
diff --git a/AmigaFonts/topaz/11 b/data/AmigaFonts/topaz/11
similarity index 100%
rename from AmigaFonts/topaz/11
rename to data/AmigaFonts/topaz/11
diff --git a/fonts/25.f16 b/data/fonts/25.f16
similarity index 100%
rename from fonts/25.f16
rename to data/fonts/25.f16
diff --git a/fonts/28.f14 b/data/fonts/28.f14
similarity index 100%
rename from fonts/28.f14
rename to data/fonts/28.f14
diff --git a/fonts/50.f8 b/data/fonts/50.f8
similarity index 100%
rename from fonts/50.f8
rename to data/fonts/50.f8
diff --git a/fonts/CVS/Entries b/data/fonts/CVS/Entries
similarity index 100%
rename from fonts/CVS/Entries
rename to data/fonts/CVS/Entries
diff --git a/fonts/CVS/Repository b/data/fonts/CVS/Repository
similarity index 100%
rename from fonts/CVS/Repository
rename to data/fonts/CVS/Repository
diff --git a/fonts/CVS/Root b/data/fonts/CVS/Root
similarity index 100%
rename from fonts/CVS/Root
rename to data/fonts/CVS/Root
diff --git a/fonts/CVS/Template b/data/fonts/CVS/Template
similarity index 100%
rename from fonts/CVS/Template
rename to data/fonts/CVS/Template
diff --git a/fonts/antique.f14 b/data/fonts/antique.f14
similarity index 100%
rename from fonts/antique.f14
rename to data/fonts/antique.f14
diff --git a/fonts/antique.f16 b/data/fonts/antique.f16
similarity index 100%
rename from fonts/antique.f16
rename to data/fonts/antique.f16
diff --git a/fonts/backward.f16 b/data/fonts/backward.f16
similarity index 100%
rename from fonts/backward.f16
rename to data/fonts/backward.f16
diff --git a/fonts/big.f16 b/data/fonts/big.f16
similarity index 100%
rename from fonts/big.f16
rename to data/fonts/big.f16
diff --git a/fonts/bigserif.f16 b/data/fonts/bigserif.f16
similarity index 100%
rename from fonts/bigserif.f16
rename to data/fonts/bigserif.f16
diff --git a/fonts/block.f16 b/data/fonts/block.f16
similarity index 100%
rename from fonts/block.f16
rename to data/fonts/block.f16
diff --git a/fonts/bold.f10 b/data/fonts/bold.f10
similarity index 100%
rename from fonts/bold.f10
rename to data/fonts/bold.f10
diff --git a/fonts/bold.f12 b/data/fonts/bold.f12
similarity index 100%
rename from fonts/bold.f12
rename to data/fonts/bold.f12
diff --git a/fonts/bold.f13 b/data/fonts/bold.f13
similarity index 100%
rename from fonts/bold.f13
rename to data/fonts/bold.f13
diff --git a/fonts/bold.f14 b/data/fonts/bold.f14
similarity index 100%
rename from fonts/bold.f14
rename to data/fonts/bold.f14
diff --git a/fonts/bold.f16 b/data/fonts/bold.f16
similarity index 100%
rename from fonts/bold.f16
rename to data/fonts/bold.f16
diff --git a/fonts/bold.f8 b/data/fonts/bold.f8
similarity index 100%
rename from fonts/bold.f8
rename to data/fonts/bold.f8
diff --git a/fonts/bren.f16 b/data/fonts/bren.f16
similarity index 100%
rename from fonts/bren.f16
rename to data/fonts/bren.f16
diff --git a/fonts/broadway.f16 b/data/fonts/broadway.f16
similarity index 100%
rename from fonts/broadway.f16
rename to data/fonts/broadway.f16
diff --git a/fonts/computer.f14 b/data/fonts/computer.f14
similarity index 100%
rename from fonts/computer.f14
rename to data/fonts/computer.f14
diff --git a/fonts/computer.f16 b/data/fonts/computer.f16
similarity index 100%
rename from fonts/computer.f16
rename to data/fonts/computer.f16
diff --git a/fonts/courier.f14 b/data/fonts/courier.f14
similarity index 100%
rename from fonts/courier.f14
rename to data/fonts/courier.f14
diff --git a/fonts/courier.f16 b/data/fonts/courier.f16
similarity index 100%
rename from fonts/courier.f16
rename to data/fonts/courier.f16
diff --git a/fonts/deco.f16 b/data/fonts/deco.f16
similarity index 100%
rename from fonts/deco.f16
rename to data/fonts/deco.f16
diff --git a/fonts/digital.f16 b/data/fonts/digital.f16
similarity index 100%
rename from fonts/digital.f16
rename to data/fonts/digital.f16
diff --git a/fonts/empty.f16 b/data/fonts/empty.f16
similarity index 100%
rename from fonts/empty.f16
rename to data/fonts/empty.f16
diff --git a/fonts/eurotype.f16 b/data/fonts/eurotype.f16
similarity index 100%
rename from fonts/eurotype.f16
rename to data/fonts/eurotype.f16
diff --git a/fonts/frankfrt.f14 b/data/fonts/frankfrt.f14
similarity index 100%
rename from fonts/frankfrt.f14
rename to data/fonts/frankfrt.f14
diff --git a/fonts/future.f16 b/data/fonts/future.f16
similarity index 100%
rename from fonts/future.f16
rename to data/fonts/future.f16
diff --git a/fonts/georgian.f14 b/data/fonts/georgian.f14
similarity index 100%
rename from fonts/georgian.f14
rename to data/fonts/georgian.f14
diff --git a/fonts/gothical.f16 b/data/fonts/gothical.f16
similarity index 100%
rename from fonts/gothical.f16
rename to data/fonts/gothical.f16
diff --git a/fonts/greek.f16 b/data/fonts/greek.f16
similarity index 100%
rename from fonts/greek.f16
rename to data/fonts/greek.f16
diff --git a/fonts/hearst.f14 b/data/fonts/hearst.f14
similarity index 100%
rename from fonts/hearst.f14
rename to data/fonts/hearst.f14
diff --git a/fonts/hearst.f16 b/data/fonts/hearst.f16
similarity index 100%
rename from fonts/hearst.f16
rename to data/fonts/hearst.f16
diff --git a/fonts/hebrew.f16 b/data/fonts/hebrew.f16
similarity index 100%
rename from fonts/hebrew.f16
rename to data/fonts/hebrew.f16
diff --git a/fonts/ibmstd.f16 b/data/fonts/ibmstd.f16
similarity index 100%
rename from fonts/ibmstd.f16
rename to data/fonts/ibmstd.f16
diff --git a/fonts/ice.f16 b/data/fonts/ice.f16
similarity index 100%
rename from fonts/ice.f16
rename to data/fonts/ice.f16
diff --git a/fonts/inverted.f16 b/data/fonts/inverted.f16
similarity index 100%
rename from fonts/inverted.f16
rename to data/fonts/inverted.f16
diff --git a/fonts/italics.f16 b/data/fonts/italics.f16
similarity index 100%
rename from fonts/italics.f16
rename to data/fonts/italics.f16
diff --git a/fonts/jasnew.f16 b/data/fonts/jasnew.f16
similarity index 100%
rename from fonts/jasnew.f16
rename to data/fonts/jasnew.f16
diff --git a/fonts/lcd.f16 b/data/fonts/lcd.f16
similarity index 100%
rename from fonts/lcd.f16
rename to data/fonts/lcd.f16
diff --git a/fonts/lorefont.f16 b/data/fonts/lorefont.f16
similarity index 100%
rename from fonts/lorefont.f16
rename to data/fonts/lorefont.f16
diff --git a/fonts/magic.f16 b/data/fonts/magic.f16
similarity index 100%
rename from fonts/magic.f16
rename to data/fonts/magic.f16
diff --git a/fonts/medieval.f16 b/data/fonts/medieval.f16
similarity index 100%
rename from fonts/medieval.f16
rename to data/fonts/medieval.f16
diff --git a/fonts/medievl-.f16 b/data/fonts/medievl-.f16
similarity index 100%
rename from fonts/medievl-.f16
rename to data/fonts/medievl-.f16
diff --git a/fonts/modern-r.f16 b/data/fonts/modern-r.f16
similarity index 100%
rename from fonts/modern-r.f16
rename to data/fonts/modern-r.f16
diff --git a/fonts/modern.f16 b/data/fonts/modern.f16
similarity index 100%
rename from fonts/modern.f16
rename to data/fonts/modern.f16
diff --git a/fonts/oldeng.f14 b/data/fonts/oldeng.f14
similarity index 100%
rename from fonts/oldeng.f14
rename to data/fonts/oldeng.f14
diff --git a/fonts/reverse.f16 b/data/fonts/reverse.f16
similarity index 100%
rename from fonts/reverse.f16
rename to data/fonts/reverse.f16
diff --git a/fonts/roman-1.f16 b/data/fonts/roman-1.f16
similarity index 100%
rename from fonts/roman-1.f16
rename to data/fonts/roman-1.f16
diff --git a/fonts/roman.f16 b/data/fonts/roman.f16
similarity index 100%
rename from fonts/roman.f16
rename to data/fonts/roman.f16
diff --git a/fonts/sansrif-.f16 b/data/fonts/sansrif-.f16
similarity index 100%
rename from fonts/sansrif-.f16
rename to data/fonts/sansrif-.f16
diff --git a/fonts/scott.f16 b/data/fonts/scott.f16
similarity index 100%
rename from fonts/scott.f16
rename to data/fonts/scott.f16
diff --git a/fonts/scrawl-1.f16 b/data/fonts/scrawl-1.f16
similarity index 100%
rename from fonts/scrawl-1.f16
rename to data/fonts/scrawl-1.f16
diff --git a/fonts/scrawl-2.f16 b/data/fonts/scrawl-2.f16
similarity index 100%
rename from fonts/scrawl-2.f16
rename to data/fonts/scrawl-2.f16
diff --git a/fonts/scribble.f16 b/data/fonts/scribble.f16
similarity index 100%
rename from fonts/scribble.f16
rename to data/fonts/scribble.f16
diff --git a/fonts/script.f14 b/data/fonts/script.f14
similarity index 100%
rename from fonts/script.f14
rename to data/fonts/script.f14
diff --git a/fonts/script.f16 b/data/fonts/script.f16
similarity index 100%
rename from fonts/script.f16
rename to data/fonts/script.f16
diff --git a/fonts/senapl.f8 b/data/fonts/senapl.f8
similarity index 100%
rename from fonts/senapl.f8
rename to data/fonts/senapl.f8
diff --git a/fonts/side.f8 b/data/fonts/side.f8
similarity index 100%
rename from fonts/side.f8
rename to data/fonts/side.f8
diff --git a/fonts/smalcaps.f14 b/data/fonts/smalcaps.f14
similarity index 100%
rename from fonts/smalcaps.f14
rename to data/fonts/smalcaps.f14
diff --git a/fonts/standard.f16 b/data/fonts/standard.f16
similarity index 100%
rename from fonts/standard.f16
rename to data/fonts/standard.f16
diff --git a/fonts/strange.f14 b/data/fonts/strange.f14
similarity index 100%
rename from fonts/strange.f14
rename to data/fonts/strange.f14
diff --git a/fonts/stretch.f16 b/data/fonts/stretch.f16
similarity index 100%
rename from fonts/stretch.f16
rename to data/fonts/stretch.f16
diff --git a/fonts/super.f16 b/data/fonts/super.f16
similarity index 100%
rename from fonts/super.f16
rename to data/fonts/super.f16
diff --git a/fonts/swiss-1.f16 b/data/fonts/swiss-1.f16
similarity index 100%
rename from fonts/swiss-1.f16
rename to data/fonts/swiss-1.f16
diff --git a/fonts/swiss-2.f16 b/data/fonts/swiss-2.f16
similarity index 100%
rename from fonts/swiss-2.f16
rename to data/fonts/swiss-2.f16
diff --git a/fonts/swiss-3.f16 b/data/fonts/swiss-3.f16
similarity index 100%
rename from fonts/swiss-3.f16
rename to data/fonts/swiss-3.f16
diff --git a/fonts/tekton.f16 b/data/fonts/tekton.f16
similarity index 100%
rename from fonts/tekton.f16
rename to data/fonts/tekton.f16
diff --git a/fonts/thai.f16 b/data/fonts/thai.f16
similarity index 100%
rename from fonts/thai.f16
rename to data/fonts/thai.f16
diff --git a/fonts/thick.f16 b/data/fonts/thick.f16
similarity index 100%
rename from fonts/thick.f16
rename to data/fonts/thick.f16
diff --git a/fonts/thin.f16 b/data/fonts/thin.f16
similarity index 100%
rename from fonts/thin.f16
rename to data/fonts/thin.f16
diff --git a/fonts/tiny.f6 b/data/fonts/tiny.f6
similarity index 100%
rename from fonts/tiny.f6
rename to data/fonts/tiny.f6
diff --git a/fonts/tiny.f7 b/data/fonts/tiny.f7
similarity index 100%
rename from fonts/tiny.f7
rename to data/fonts/tiny.f7
diff --git a/fonts/tiny.f8 b/data/fonts/tiny.f8
similarity index 100%
rename from fonts/tiny.f8
rename to data/fonts/tiny.f8
diff --git a/Info.plist b/data/install/Info.plist
similarity index 100%
rename from Info.plist
rename to data/install/Info.plist
diff --git a/SyncTERM.icns b/data/install/SyncTERM.icns
similarity index 100%
rename from SyncTERM.icns
rename to data/install/SyncTERM.icns
diff --git a/syncterm.desktop b/data/install/syncterm.desktop
similarity index 100%
rename from syncterm.desktop
rename to data/install/syncterm.desktop
diff --git a/syncterm.iss b/data/install/syncterm.iss
similarity index 100%
rename from syncterm.iss
rename to data/install/syncterm.iss
diff --git a/syncterm.png b/data/install/syncterm.png
similarity index 100%
rename from syncterm.png
rename to data/install/syncterm.png
diff --git a/syncterm.spec b/data/install/syncterm.spec
similarity index 100%
rename from syncterm.spec
rename to data/install/syncterm.spec
diff --git a/uncrustify.cfg b/data/uncrustify.cfg
similarity index 100%
rename from uncrustify.cfg
rename to data/uncrustify.cfg
diff --git a/uncrustify.rob b/data/uncrustify.rob
similarity index 100%
rename from uncrustify.rob
rename to data/uncrustify.rob
diff --git a/Install-Mozilla.txt b/docs/Install-Mozilla.txt
similarity index 100%
rename from Install-Mozilla.txt
rename to docs/Install-Mozilla.txt
diff --git a/Install-Win32.txt b/docs/Install-Win32.txt
similarity index 100%
rename from Install-Win32.txt
rename to docs/Install-Win32.txt
diff --git a/Manual.txt b/docs/Manual.txt
similarity index 100%
rename from Manual.txt
rename to docs/Manual.txt
diff --git a/Notes For Macintosh Users.rtf b/docs/Notes For Macintosh Users.rtf
similarity index 100%
rename from Notes For Macintosh Users.rtf
rename to docs/Notes For Macintosh Users.rtf
diff --git a/gpl.txt b/docs/gpl.txt
similarity index 100%
rename from gpl.txt
rename to docs/gpl.txt
diff --git a/ripnotes.txt b/docs/ripnotes.txt
similarity index 100%
rename from ripnotes.txt
rename to docs/ripnotes.txt
diff --git a/syncterm.man.in b/docs/syncterm.man.in
similarity index 100%
rename from syncterm.man.in
rename to docs/syncterm.man.in
diff --git a/getlist.ftp b/scripts/getlist.ftp
similarity index 100%
rename from getlist.ftp
rename to scripts/getlist.ftp
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..02556c0ab88d3a21b391021c5b89f360013b943f
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,64 @@
+cmake_minimum_required(VERSION 3.14)
+project (SyncTERM C)
+include("FetchContent")
+
+FetchContent_Declare(
+	XPDevPlus
+	GIT_REPOSITORY https://gitlab.synchro.net/Deuce/xpdevplus.git
+	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/xpdevplus
+)
+FetchContent_MakeAvailable(XPDevPlus)
+
+FetchContent_Declare(
+	CryptlibBuild
+	GIT_REPOSITORY https://gitlab.synchro.net/Deuce/cryptlib.git
+	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/cryptlib
+)
+FetchContent_MakeAvailable(CryptlibBuild)
+
+set(SOURCE
+	bbslist.c
+	uifcinit.c
+	fonts.c
+	rlogin.c
+	telnet_io.c
+	conn_telnet.c
+	conn.c
+	term.c
+	window.c
+	menu.c
+	ssh.c
+	st_crypt.c
+	syncterm.c
+	telnet.c
+	telnets.c
+	ooii.c
+	ooii_logons.c
+	ooii_cmenus.c
+	ooii_bmenus.c
+	ooii_sounds.c
+	modem.c
+	xmodem.c
+	zmodem.c
+	conn_pty.c
+	ripper.c
+)
+
+add_executable(syncterm ${SOURCE})
+target_link_libraries(syncterm cryptlib xpdevplus)
+target_include_directories(syncterm PRIVATE ${CMAKE_BINARY_DIR})
+target_compile_definitions(syncterm PRIVATE STATIC_CRYPTLIB)
+
+check_library_exists(util forkpty "" HAS_FORKPTY)
+if(HAS_FORKPTY)
+	target_link_libraries(syncterm util)
+else()
+	target_compile_definitions(syncterm PRIVATE NEEDS_FORKPTY)
+endif()
+
+check_library_exists(c daemon "" HAS_DAEMON)
+if(NOT HAS_FORKPTY)
+	target_compile_definitions(syncterm PRIVATE NEEDS_DAEMON)
+endif()
+
+install(TARGETS syncterm RUNTIME)
diff --git a/amigafont.h b/src/amigafont.h
similarity index 100%
rename from amigafont.h
rename to src/amigafont.h
diff --git a/bbslist.c b/src/bbslist.c
similarity index 100%
rename from bbslist.c
rename to src/bbslist.c
diff --git a/bbslist.h b/src/bbslist.h
similarity index 100%
rename from bbslist.h
rename to src/bbslist.h
diff --git a/conn.c b/src/conn.c
similarity index 100%
rename from conn.c
rename to src/conn.c
diff --git a/conn.h b/src/conn.h
similarity index 100%
rename from conn.h
rename to src/conn.h
diff --git a/conn_pty.c b/src/conn_pty.c
similarity index 100%
rename from conn_pty.c
rename to src/conn_pty.c
diff --git a/conn_pty.h b/src/conn_pty.h
similarity index 100%
rename from conn_pty.h
rename to src/conn_pty.h
diff --git a/conn_telnet.c b/src/conn_telnet.c
similarity index 100%
rename from conn_telnet.c
rename to src/conn_telnet.c
diff --git a/conn_telnet.h b/src/conn_telnet.h
similarity index 100%
rename from conn_telnet.h
rename to src/conn_telnet.h
diff --git a/coverity_model.c b/src/coverity_model.c
similarity index 100%
rename from coverity_model.c
rename to src/coverity_model.c
diff --git a/fonts.c b/src/fonts.c
similarity index 100%
rename from fonts.c
rename to src/fonts.c
diff --git a/fonts.h b/src/fonts.h
similarity index 100%
rename from fonts.h
rename to src/fonts.h
diff --git a/menu.c b/src/menu.c
similarity index 100%
rename from menu.c
rename to src/menu.c
diff --git a/menu.h b/src/menu.h
similarity index 100%
rename from menu.h
rename to src/menu.h
diff --git a/modem.c b/src/modem.c
similarity index 100%
rename from modem.c
rename to src/modem.c
diff --git a/modem.h b/src/modem.h
similarity index 100%
rename from modem.h
rename to src/modem.h
diff --git a/ooii.c b/src/ooii.c
similarity index 100%
rename from ooii.c
rename to src/ooii.c
diff --git a/ooii.h b/src/ooii.h
similarity index 100%
rename from ooii.h
rename to src/ooii.h
diff --git a/ooii_bmenus.c b/src/ooii_bmenus.c
similarity index 100%
rename from ooii_bmenus.c
rename to src/ooii_bmenus.c
diff --git a/ooii_bmenus.h b/src/ooii_bmenus.h
similarity index 100%
rename from ooii_bmenus.h
rename to src/ooii_bmenus.h
diff --git a/ooii_cmenus.c b/src/ooii_cmenus.c
similarity index 100%
rename from ooii_cmenus.c
rename to src/ooii_cmenus.c
diff --git a/ooii_cmenus.h b/src/ooii_cmenus.h
similarity index 100%
rename from ooii_cmenus.h
rename to src/ooii_cmenus.h
diff --git a/ooii_logons.c b/src/ooii_logons.c
similarity index 100%
rename from ooii_logons.c
rename to src/ooii_logons.c
diff --git a/ooii_logons.h b/src/ooii_logons.h
similarity index 100%
rename from ooii_logons.h
rename to src/ooii_logons.h
diff --git a/ooii_sounds.c b/src/ooii_sounds.c
similarity index 100%
rename from ooii_sounds.c
rename to src/ooii_sounds.c
diff --git a/ooii_sounds.h b/src/ooii_sounds.h
similarity index 100%
rename from ooii_sounds.h
rename to src/ooii_sounds.h
diff --git a/raw.h b/src/raw.h
similarity index 100%
rename from raw.h
rename to src/raw.h
diff --git a/ripper.c b/src/ripper.c
similarity index 100%
rename from ripper.c
rename to src/ripper.c
diff --git a/ripper.h b/src/ripper.h
similarity index 100%
rename from ripper.h
rename to src/ripper.h
diff --git a/rlogin.c b/src/rlogin.c
similarity index 100%
rename from rlogin.c
rename to src/rlogin.c
diff --git a/rlogin.h b/src/rlogin.h
similarity index 100%
rename from rlogin.h
rename to src/rlogin.h
diff --git a/saucedefs.h b/src/saucedefs.h
similarity index 100%
rename from saucedefs.h
rename to src/saucedefs.h
diff --git a/sexyz.h b/src/sexyz.h
similarity index 100%
rename from sexyz.h
rename to src/sexyz.h
diff --git a/ssh.c b/src/ssh.c
similarity index 100%
rename from ssh.c
rename to src/ssh.c
diff --git a/ssh.h b/src/ssh.h
similarity index 100%
rename from ssh.h
rename to src/ssh.h
diff --git a/st_crypt.c b/src/st_crypt.c
similarity index 100%
rename from st_crypt.c
rename to src/st_crypt.c
diff --git a/st_crypt.h b/src/st_crypt.h
similarity index 100%
rename from st_crypt.h
rename to src/st_crypt.h
diff --git a/syncterm.c b/src/syncterm.c
similarity index 100%
rename from syncterm.c
rename to src/syncterm.c
diff --git a/syncterm.h b/src/syncterm.h
similarity index 100%
rename from syncterm.h
rename to src/syncterm.h
diff --git a/telnet.c b/src/telnet.c
similarity index 100%
rename from telnet.c
rename to src/telnet.c
diff --git a/telnet.h b/src/telnet.h
similarity index 100%
rename from telnet.h
rename to src/telnet.h
diff --git a/telnet_io.c b/src/telnet_io.c
similarity index 100%
rename from telnet_io.c
rename to src/telnet_io.c
diff --git a/telnet_io.h b/src/telnet_io.h
similarity index 100%
rename from telnet_io.h
rename to src/telnet_io.h
diff --git a/telnets.c b/src/telnets.c
similarity index 100%
rename from telnets.c
rename to src/telnets.c
diff --git a/telnets.h b/src/telnets.h
similarity index 100%
rename from telnets.h
rename to src/telnets.h
diff --git a/term.c b/src/term.c
similarity index 100%
rename from term.c
rename to src/term.c
diff --git a/term.h b/src/term.h
similarity index 100%
rename from term.h
rename to src/term.h
diff --git a/uifcinit.c b/src/uifcinit.c
similarity index 100%
rename from uifcinit.c
rename to src/uifcinit.c
diff --git a/uifcinit.h b/src/uifcinit.h
similarity index 100%
rename from uifcinit.h
rename to src/uifcinit.h
diff --git a/window.c b/src/window.c
similarity index 100%
rename from window.c
rename to src/window.c
diff --git a/window.h b/src/window.h
similarity index 100%
rename from window.h
rename to src/window.h
diff --git a/xmodem.c b/src/xmodem.c
similarity index 100%
rename from xmodem.c
rename to src/xmodem.c
diff --git a/xmodem.h b/src/xmodem.h
similarity index 100%
rename from xmodem.h
rename to src/xmodem.h
diff --git a/zmodem.c b/src/zmodem.c
similarity index 100%
rename from zmodem.c
rename to src/zmodem.c
diff --git a/zmodem.h b/src/zmodem.h
similarity index 100%
rename from zmodem.h
rename to src/zmodem.h
diff --git a/syncterm.ini b/syncterm.ini
deleted file mode 100644
index 8a8c5d16072f23b329382fa8f005d860097e58ea..0000000000000000000000000000000000000000
--- a/syncterm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[SyncTERM]
-	ConfirmClose   =false
-	SortOrder      =5,1