diff --git a/Machines/Commodore/1540/Commodore1540.cpp b/Machines/Commodore/1540/Commodore1540.cpp
new file mode 100644
index 000000000..bec2a9567
--- /dev/null
+++ b/Machines/Commodore/1540/Commodore1540.cpp
@@ -0,0 +1,9 @@
+//
+//  Commodore1540.cpp
+//  Clock Signal
+//
+//  Created by Thomas Harte on 05/07/2016.
+//  Copyright © 2016 Thomas Harte. All rights reserved.
+//
+
+#include "Commodore1540.hpp"
diff --git a/Machines/Commodore/1540/Commodore1540.hpp b/Machines/Commodore/1540/Commodore1540.hpp
new file mode 100644
index 000000000..f661b740a
--- /dev/null
+++ b/Machines/Commodore/1540/Commodore1540.hpp
@@ -0,0 +1,14 @@
+//
+//  Commodore1540.hpp
+//  Clock Signal
+//
+//  Created by Thomas Harte on 05/07/2016.
+//  Copyright © 2016 Thomas Harte. All rights reserved.
+//
+
+#ifndef Commodore1540_hpp
+#define Commodore1540_hpp
+
+#include <stdio.h>
+
+#endif /* Commodore1540_hpp */
diff --git a/Machines/Vic-20/Vic20.cpp b/Machines/Commodore/Vic-20/Vic20.cpp
similarity index 99%
rename from Machines/Vic-20/Vic20.cpp
rename to Machines/Commodore/Vic-20/Vic20.cpp
index c912908b4..b3b50f231 100644
--- a/Machines/Vic-20/Vic20.cpp
+++ b/Machines/Commodore/Vic-20/Vic20.cpp
@@ -10,7 +10,7 @@
 
 #include <algorithm>
 
-using namespace Vic20;
+using namespace Commodore::Vic20;
 
 Machine::Machine() :
 	_rom(nullptr)
diff --git a/Machines/Vic-20/Vic20.hpp b/Machines/Commodore/Vic-20/Vic20.hpp
similarity index 96%
rename from Machines/Vic-20/Vic20.hpp
rename to Machines/Commodore/Vic-20/Vic20.hpp
index 4c298aa13..af1453120 100644
--- a/Machines/Vic-20/Vic20.hpp
+++ b/Machines/Commodore/Vic-20/Vic20.hpp
@@ -9,14 +9,15 @@
 #ifndef Vic20_hpp
 #define Vic20_hpp
 
-#include "../../Processors/6502/CPU6502.hpp"
-#include "../../Storage/Tape/Tape.hpp"
-#include "../../Components/6560/6560.hpp"
-#include "../../Components/6522/6522.hpp"
+#include "../../../Processors/6502/CPU6502.hpp"
+#include "../../../Storage/Tape/Tape.hpp"
+#include "../../../Components/6560/6560.hpp"
+#include "../../../Components/6522/6522.hpp"
 
-#include "../CRTMachine.hpp"
-#include "../Typer.hpp"
+#include "../../CRTMachine.hpp"
+#include "../../Typer.hpp"
 
+namespace Commodore {
 namespace Vic20 {
 
 enum ROMSlot {
@@ -292,6 +293,7 @@ class Machine:
 		bool _use_fast_tape_hack;
 };
 
+}
 }
 
 #endif /* Vic20_hpp */
diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj
index b4c059c73..a0a688053 100644
--- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj	
+++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj	
@@ -25,6 +25,8 @@
 		4B2E2D951C399D1200138695 /* ElectronDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E2D931C399D1200138695 /* ElectronDocument.xib */; };
 		4B2E2D9A1C3A06EC00138695 /* Atari2600.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B2E2D971C3A06EC00138695 /* Atari2600.cpp */; };
 		4B2E2D9D1C3A070400138695 /* Electron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B2E2D9B1C3A070400138695 /* Electron.cpp */; };
+		4B4DC8211D2C2425003C5BF8 /* Vic20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B4DC81F1D2C2425003C5BF8 /* Vic20.cpp */; };
+		4B4DC8281D2C2470003C5BF8 /* Commodore1540.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B4DC8261D2C2470003C5BF8 /* Commodore1540.cpp */; };
 		4B55CE581C3B7D360093A61B /* Atari2600Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B55CE561C3B7D360093A61B /* Atari2600Document.swift */; };
 		4B55CE591C3B7D360093A61B /* ElectronDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B55CE571C3B7D360093A61B /* ElectronDocument.swift */; };
 		4B55CE5D1C3B7D6F0093A61B /* CSOpenGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B55CE5C1C3B7D6F0093A61B /* CSOpenGLView.m */; };
@@ -34,7 +36,6 @@
 		4B69FB461C4D950F00B5F0AA /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B69FB451C4D950F00B5F0AA /* libz.tbd */; };
 		4B73C71A1D036BD90074D992 /* Vic20Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B73C7191D036BD90074D992 /* Vic20Document.swift */; };
 		4B73C71D1D036C030074D992 /* Vic20Document.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B73C71B1D036C030074D992 /* Vic20Document.xib */; };
-		4B886FF21D03B517004291C3 /* Vic20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B886FF01D03B517004291C3 /* Vic20.cpp */; };
 		4B92EACA1B7C112B00246143 /* 6502TimingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B92EAC91B7C112B00246143 /* 6502TimingTests.swift */; };
 		4BB298EE1B587D8400A49093 /* 6502_functional_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4BB297E01B587D8300A49093 /* 6502_functional_test.bin */; };
 		4BB298EF1B587D8400A49093 /* AllSuiteA.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4BB297E11B587D8300A49093 /* AllSuiteA.bin */; };
@@ -384,6 +385,10 @@
 		4B2E2D991C3A06EC00138695 /* Atari2600Inputs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atari2600Inputs.h; sourceTree = "<group>"; };
 		4B2E2D9B1C3A070400138695 /* Electron.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Electron.cpp; path = Electron/Electron.cpp; sourceTree = "<group>"; };
 		4B2E2D9C1C3A070400138695 /* Electron.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Electron.hpp; path = Electron/Electron.hpp; sourceTree = "<group>"; };
+		4B4DC81F1D2C2425003C5BF8 /* Vic20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Vic20.cpp; sourceTree = "<group>"; };
+		4B4DC8201D2C2425003C5BF8 /* Vic20.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Vic20.hpp; sourceTree = "<group>"; };
+		4B4DC8261D2C2470003C5BF8 /* Commodore1540.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Commodore1540.cpp; sourceTree = "<group>"; };
+		4B4DC8271D2C2470003C5BF8 /* Commodore1540.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Commodore1540.hpp; sourceTree = "<group>"; };
 		4B55CE561C3B7D360093A61B /* Atari2600Document.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Atari2600Document.swift; sourceTree = "<group>"; };
 		4B55CE571C3B7D360093A61B /* ElectronDocument.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElectronDocument.swift; sourceTree = "<group>"; };
 		4B55CE5B1C3B7D6F0093A61B /* CSOpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSOpenGLView.h; sourceTree = "<group>"; };
@@ -396,8 +401,6 @@
 		4B69FB451C4D950F00B5F0AA /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
 		4B73C7191D036BD90074D992 /* Vic20Document.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Vic20Document.swift; sourceTree = "<group>"; };
 		4B73C71C1D036C030074D992 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Clock Signal/Base.lproj/Vic20Document.xib"; sourceTree = SOURCE_ROOT; };
-		4B886FF01D03B517004291C3 /* Vic20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vic20.cpp; path = "Vic-20/Vic20.cpp"; sourceTree = "<group>"; };
-		4B886FF11D03B517004291C3 /* Vic20.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Vic20.hpp; path = "Vic-20/Vic20.hpp"; sourceTree = "<group>"; };
 		4B92EAC91B7C112B00246143 /* 6502TimingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 6502TimingTests.swift; sourceTree = "<group>"; };
 		4BB297DF1B587D8200A49093 /* Clock SignalTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Clock SignalTests-Bridging-Header.h"; sourceTree = "<group>"; };
 		4BB297E01B587D8300A49093 /* 6502_functional_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 6502_functional_test.bin; sourceTree = "<group>"; };
@@ -859,6 +862,33 @@
 			name = Outputs;
 			sourceTree = "<group>";
 		};
+		4B4DC81D1D2C2425003C5BF8 /* Commodore */ = {
+			isa = PBXGroup;
+			children = (
+				4B4DC8251D2C2470003C5BF8 /* 1540 */,
+				4B4DC81E1D2C2425003C5BF8 /* Vic-20 */,
+			);
+			path = Commodore;
+			sourceTree = "<group>";
+		};
+		4B4DC81E1D2C2425003C5BF8 /* Vic-20 */ = {
+			isa = PBXGroup;
+			children = (
+				4B4DC81F1D2C2425003C5BF8 /* Vic20.cpp */,
+				4B4DC8201D2C2425003C5BF8 /* Vic20.hpp */,
+			);
+			path = "Vic-20";
+			sourceTree = "<group>";
+		};
+		4B4DC8251D2C2470003C5BF8 /* 1540 */ = {
+			isa = PBXGroup;
+			children = (
+				4B4DC8261D2C2470003C5BF8 /* Commodore1540.cpp */,
+				4B4DC8271D2C2470003C5BF8 /* Commodore1540.hpp */,
+			);
+			path = 1540;
+			sourceTree = "<group>";
+		};
 		4B55CE551C3B7D360093A61B /* Documents */ = {
 			isa = PBXGroup;
 			children = (
@@ -913,15 +943,6 @@
 			path = Formats;
 			sourceTree = "<group>";
 		};
-		4B886FF61D03B632004291C3 /* Vic-20 */ = {
-			isa = PBXGroup;
-			children = (
-				4B886FF01D03B517004291C3 /* Vic20.cpp */,
-				4B886FF11D03B517004291C3 /* Vic20.hpp */,
-			);
-			name = "Vic-20";
-			sourceTree = "<group>";
-		};
 		4BB297E41B587D8300A49093 /* Wolfgang Lorenz 6502 test suite */ = {
 			isa = PBXGroup;
 			children = (
@@ -1275,10 +1296,10 @@
 		4BB73EDC1B587CA500552FC2 /* Machines */ = {
 			isa = PBXGroup;
 			children = (
+				4B4DC81D1D2C2425003C5BF8 /* Commodore */,
 				4B046DC31CFE651500E9E45E /* CRTMachine.hpp */,
 				4B2E2D961C3A06EC00138695 /* Atari2600 */,
 				4B2E2D9E1C3A070900138695 /* Electron */,
-				4B886FF61D03B632004291C3 /* Vic-20 */,
 				4B1E85731D170228001EF87D /* Typer.cpp */,
 				4B1E85741D170228001EF87D /* Typer.hpp */,
 			);
@@ -1780,7 +1801,6 @@
 				4BBF99151C8FBA6F0075DAFB /* CRTOpenGL.cpp in Sources */,
 				4B0CCC451C62D0B3001CAC5F /* CRT.cpp in Sources */,
 				4B55CE591C3B7D360093A61B /* ElectronDocument.swift in Sources */,
-				4B886FF21D03B517004291C3 /* Vic20.cpp in Sources */,
 				4BC3B74F1CD194CC00F86E85 /* Shader.cpp in Sources */,
 				4B55CE581C3B7D360093A61B /* Atari2600Document.swift in Sources */,
 				4BBB14311CD2CECE00BDB55C /* IntermediateShader.cpp in Sources */,
@@ -1791,8 +1811,10 @@
 				4B55CE5F1C3B7D960093A61B /* MachineDocument.swift in Sources */,
 				4B2A53A11D117D36003C6002 /* CSAtari2600.mm in Sources */,
 				4B69FB441C4D941400B5F0AA /* TapeUEF.cpp in Sources */,
+				4B4DC8211D2C2425003C5BF8 /* Vic20.cpp in Sources */,
 				4BBF99141C8FBA6F0075DAFB /* CRTInputBufferBuilder.cpp in Sources */,
 				4B2409551C45AB05004DA684 /* Speaker.cpp in Sources */,
+				4B4DC8281D2C2470003C5BF8 /* Commodore1540.cpp in Sources */,
 				4B1E85751D170228001EF87D /* Typer.cpp in Sources */,
 				4B2E2D9D1C3A070400138695 /* Electron.cpp in Sources */,
 				4B69FB3D1C4D908A00B5F0AA /* Tape.cpp in Sources */,
diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm
index 434c7f197..3e576ca20 100644
--- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm	
+++ b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm	
@@ -11,8 +11,10 @@
 #include "Vic20.hpp"
 #include "CommodoreTAP.hpp"
 
+using namespace Commodore::Vic20;
+
 @implementation CSVic20 {
-	Vic20::Machine _vic20;
+	Machine _vic20;
 	BOOL _joystickMode;
 }
 
@@ -20,22 +22,22 @@
 	return &_vic20;
 }
 
-- (void)setROM:(nonnull NSData *)rom slot:(Vic20::ROMSlot)slot {
+- (void)setROM:(nonnull NSData *)rom slot:(ROMSlot)slot {
 	@synchronized(self) {
 		_vic20.set_rom(slot, rom.length, (const uint8_t *)rom.bytes);
 	}
 }
 
 - (void)setKernelROM:(nonnull NSData *)rom {
-	[self setROM:rom slot:Vic20::ROMSlotKernel];
+	[self setROM:rom slot:ROMSlotKernel];
 }
 
 - (void)setBASICROM:(nonnull NSData *)rom {
-	[self setROM:rom slot:Vic20::ROMSlotBASIC];
+	[self setROM:rom slot:ROMSlotBASIC];
 }
 
 - (void)setCharactersROM:(nonnull NSData *)rom {
-	[self setROM:rom slot:Vic20::ROMSlotCharacters];
+	[self setROM:rom slot:ROMSlotCharacters];
 }
 
 - (BOOL)openTAPAtURL:(NSURL *)URL {
@@ -59,50 +61,50 @@
 
 - (void)setKey:(uint16_t)key isPressed:(BOOL)isPressed {
 	static NSDictionary<NSNumber *, NSNumber *> *vicKeysByKeys = @{
-		@(VK_ANSI_1):	@(Vic20::Key::Key1),	@(VK_ANSI_2):	@(Vic20::Key::Key2),
-		@(VK_ANSI_3):	@(Vic20::Key::Key3),	@(VK_ANSI_4):	@(Vic20::Key::Key4),
-		@(VK_ANSI_5):	@(Vic20::Key::Key5),	@(VK_ANSI_6):	@(Vic20::Key::Key6),
-		@(VK_ANSI_7):	@(Vic20::Key::Key7),	@(VK_ANSI_8):	@(Vic20::Key::Key8),
-		@(VK_ANSI_9):	@(Vic20::Key::Key9),	@(VK_ANSI_0):	@(Vic20::Key::Key0),
+		@(VK_ANSI_1):	@(Key::Key1),	@(VK_ANSI_2):	@(Key::Key2),
+		@(VK_ANSI_3):	@(Key::Key3),	@(VK_ANSI_4):	@(Key::Key4),
+		@(VK_ANSI_5):	@(Key::Key5),	@(VK_ANSI_6):	@(Key::Key6),
+		@(VK_ANSI_7):	@(Key::Key7),	@(VK_ANSI_8):	@(Key::Key8),
+		@(VK_ANSI_9):	@(Key::Key9),	@(VK_ANSI_0):	@(Key::Key0),
 
-		@(VK_ANSI_Q):	@(Vic20::Key::KeyQ),	@(VK_ANSI_W):	@(Vic20::Key::KeyW),
-		@(VK_ANSI_E):	@(Vic20::Key::KeyE),	@(VK_ANSI_R):	@(Vic20::Key::KeyR),
-		@(VK_ANSI_T):	@(Vic20::Key::KeyT),	@(VK_ANSI_Y):	@(Vic20::Key::KeyY),
-		@(VK_ANSI_U):	@(Vic20::Key::KeyU),	@(VK_ANSI_I):	@(Vic20::Key::KeyI),
-		@(VK_ANSI_O):	@(Vic20::Key::KeyO),	@(VK_ANSI_P):	@(Vic20::Key::KeyP),
-		@(VK_ANSI_A):	@(Vic20::Key::KeyA),	@(VK_ANSI_S):	@(Vic20::Key::KeyS),
-		@(VK_ANSI_D):	@(Vic20::Key::KeyD),	@(VK_ANSI_F):	@(Vic20::Key::KeyF),
-		@(VK_ANSI_G):	@(Vic20::Key::KeyG),	@(VK_ANSI_H):	@(Vic20::Key::KeyH),
-		@(VK_ANSI_J):	@(Vic20::Key::KeyJ),	@(VK_ANSI_K):	@(Vic20::Key::KeyK),
-		@(VK_ANSI_L):	@(Vic20::Key::KeyL),	@(VK_ANSI_Z):	@(Vic20::Key::KeyZ),
-		@(VK_ANSI_X):	@(Vic20::Key::KeyX),	@(VK_ANSI_C):	@(Vic20::Key::KeyC),
-		@(VK_ANSI_V):	@(Vic20::Key::KeyV),	@(VK_ANSI_B):	@(Vic20::Key::KeyB),
-		@(VK_ANSI_N):	@(Vic20::Key::KeyN),	@(VK_ANSI_M):	@(Vic20::Key::KeyM),
+		@(VK_ANSI_Q):	@(Key::KeyQ),	@(VK_ANSI_W):	@(Key::KeyW),
+		@(VK_ANSI_E):	@(Key::KeyE),	@(VK_ANSI_R):	@(Key::KeyR),
+		@(VK_ANSI_T):	@(Key::KeyT),	@(VK_ANSI_Y):	@(Key::KeyY),
+		@(VK_ANSI_U):	@(Key::KeyU),	@(VK_ANSI_I):	@(Key::KeyI),
+		@(VK_ANSI_O):	@(Key::KeyO),	@(VK_ANSI_P):	@(Key::KeyP),
+		@(VK_ANSI_A):	@(Key::KeyA),	@(VK_ANSI_S):	@(Key::KeyS),
+		@(VK_ANSI_D):	@(Key::KeyD),	@(VK_ANSI_F):	@(Key::KeyF),
+		@(VK_ANSI_G):	@(Key::KeyG),	@(VK_ANSI_H):	@(Key::KeyH),
+		@(VK_ANSI_J):	@(Key::KeyJ),	@(VK_ANSI_K):	@(Key::KeyK),
+		@(VK_ANSI_L):	@(Key::KeyL),	@(VK_ANSI_Z):	@(Key::KeyZ),
+		@(VK_ANSI_X):	@(Key::KeyX),	@(VK_ANSI_C):	@(Key::KeyC),
+		@(VK_ANSI_V):	@(Key::KeyV),	@(VK_ANSI_B):	@(Key::KeyB),
+		@(VK_ANSI_N):	@(Key::KeyN),	@(VK_ANSI_M):	@(Key::KeyM),
 
-		@(VK_Space):			@(Vic20::Key::KeySpace),
-		@(VK_Return):			@(Vic20::Key::KeyReturn),
-		@(VK_Delete):			@(Vic20::Key::KeyDelete),
-		@(VK_ANSI_Comma):		@(Vic20::Key::KeyComma),
-		@(VK_ANSI_Period):		@(Vic20::Key::KeyFullStop),
-		@(VK_ANSI_Minus):		@(Vic20::Key::KeyDash),
-		@(VK_ANSI_Equal):		@(Vic20::Key::KeyEquals),
-		@(VK_ANSI_Semicolon):	@(Vic20::Key::KeyColon),
-		@(VK_ANSI_Quote):		@(Vic20::Key::KeySemicolon),
-		@(VK_ANSI_Slash):		@(Vic20::Key::KeySlash),
-		@(VK_Option):			@(Vic20::Key::KeyCBM),
-		@(VK_Control):			@(Vic20::Key::KeyControl),
+		@(VK_Space):			@(Key::KeySpace),
+		@(VK_Return):			@(Key::KeyReturn),
+		@(VK_Delete):			@(Key::KeyDelete),
+		@(VK_ANSI_Comma):		@(Key::KeyComma),
+		@(VK_ANSI_Period):		@(Key::KeyFullStop),
+		@(VK_ANSI_Minus):		@(Key::KeyDash),
+		@(VK_ANSI_Equal):		@(Key::KeyEquals),
+		@(VK_ANSI_Semicolon):	@(Key::KeyColon),
+		@(VK_ANSI_Quote):		@(Key::KeySemicolon),
+		@(VK_ANSI_Slash):		@(Key::KeySlash),
+		@(VK_Option):			@(Key::KeyCBM),
+		@(VK_Control):			@(Key::KeyControl),
 
-		@(VK_F1):	@(Vic20::Key::KeyF1),	@(VK_F3):	@(Vic20::Key::KeyF3),
-		@(VK_F5):	@(Vic20::Key::KeyF5),	@(VK_F7):	@(Vic20::Key::KeyF7),
+		@(VK_F1):	@(Key::KeyF1),	@(VK_F3):	@(Key::KeyF3),
+		@(VK_F5):	@(Key::KeyF5),	@(VK_F7):	@(Key::KeyF7),
 
-		@(VK_ANSI_Grave):			@(Vic20::Key::KeyLeft),
-		@(VK_Tab):					@(Vic20::Key::KeyRunStop),
-		@(VK_ANSI_LeftBracket):		@(Vic20::Key::KeyAt),
-		@(VK_ANSI_RightBracket):	@(Vic20::Key::KeyAsterisk),
-		@(VK_ANSI_Backslash):		@(Vic20::Key::KeyUp),
+		@(VK_ANSI_Grave):			@(Key::KeyLeft),
+		@(VK_Tab):					@(Key::KeyRunStop),
+		@(VK_ANSI_LeftBracket):		@(Key::KeyAt),
+		@(VK_ANSI_RightBracket):	@(Key::KeyAsterisk),
+		@(VK_ANSI_Backslash):		@(Key::KeyUp),
 
-		@(VK_RightArrow):			@(Vic20::Key::KeyRight),
-		@(VK_DownArrow):			@(Vic20::Key::KeyDown),
+		@(VK_RightArrow):			@(Key::KeyRight),
+		@(VK_DownArrow):			@(Key::KeyDown),
 	};
 
 	// Not yet mapped:
@@ -120,11 +122,11 @@
 		{
 			switch(key)
 			{
-				case VK_UpArrow:	_vic20.set_joystick_state(Vic20::JoystickInput::Up, isPressed);		break;
-				case VK_DownArrow:	_vic20.set_joystick_state(Vic20::JoystickInput::Down, isPressed);	break;
-				case VK_LeftArrow:	_vic20.set_joystick_state(Vic20::JoystickInput::Left, isPressed);	break;
-				case VK_RightArrow:	_vic20.set_joystick_state(Vic20::JoystickInput::Right, isPressed);	break;
-				case VK_ANSI_A:		_vic20.set_joystick_state(Vic20::JoystickInput::Fire, isPressed);	break;
+				case VK_UpArrow:	_vic20.set_joystick_state(JoystickInput::Up, isPressed);		break;
+				case VK_DownArrow:	_vic20.set_joystick_state(JoystickInput::Down, isPressed);	break;
+				case VK_LeftArrow:	_vic20.set_joystick_state(JoystickInput::Left, isPressed);	break;
+				case VK_RightArrow:	_vic20.set_joystick_state(JoystickInput::Right, isPressed);	break;
+				case VK_ANSI_A:		_vic20.set_joystick_state(JoystickInput::Fire, isPressed);	break;
 			}
 		}
 		else
@@ -135,7 +137,7 @@
 					NSNumber *targetKey = vicKeysByKeys[@(key)];
 					if(targetKey)
 					{
-						_vic20.set_key_state((Vic20::Key)targetKey.integerValue, isPressed);
+						_vic20.set_key_state((Key)targetKey.integerValue, isPressed);
 					}
 					else
 						NSLog(@"Unmapped: %02x", key);
@@ -143,8 +145,8 @@
 
 				case VK_Shift:
 					// Yuck
-					_vic20.set_key_state(Vic20::Key::KeyLShift, isPressed);
-					_vic20.set_key_state(Vic20::Key::KeyRShift, isPressed);
+					_vic20.set_key_state(Key::KeyLShift, isPressed);
+					_vic20.set_key_state(Key::KeyRShift, isPressed);
 				break;
 			}
 		}