[Solved] Kryonet fails to deserialize

I have been scratching my head for several hours as to why this simple kyronet connection isn’t working. It connects fine and sends all the keep alives, but then when I go to send a custom object over the network it spits out a deserialization error shown below:

com.esotericsoftware.kryonet.KryoNetException: Error during deserialization.
	at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:141)
	at com.esotericsoftware.kryonet.Server.update(Server.java:198)
	at com.esotericsoftware.kryonet.Server.run(Server.java:356)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 104
Serialization trace:
columns (com.digiturtle.warfare.server.Database)
	at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:113)
	at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:613)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:599)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:735)
	at com.esotericsoftware.kryonet.KryoSerialization.read(KryoSerialization.java:58)
	at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:139)
	... 3 more

This is my server:

final Server server = new Server();
		Log.TRACE();

		Kryo kryo = server.getKryo();
		kryo.register(Database.class);
		kryo.register(Record.class);
		kryo.register(Object.class);
		kryo.register(Class.class);
		kryo.register(ArrayList.class);
		kryo.register(RegistrationRequest.class);
		kryo.register(RegistrationResponse.class);
		kryo.register(Account.class);
//		kryo.register(String.class);

		server.start();
		server.bind(Settings.PORT);
		
		database = readObject(kryo, "database", Database.class);
		System.out.println(database.toString());
		server.addListener(new Listener() {
			
			public void connected(Connection connection) {
				System.out.println("Incoming Connection: " + connection.getID());
			}

			public void disconnected(Connection connection) {
				System.out.println("Ending Connection: " + connection.getID());
			}
			
			public void received(Connection connection, Object object) {
				System.out.println("Object from Connection " + connection.getID() + ": " + object);
				if (object instanceof RegistrationRequest) {
					// Removed response code
				}
			}
			
		});
		System.out.println("Starting up server");
//		try {
//			
//		} catch (Throwable t) {
//			System.out.println("Saving server");
//			writeObject(kryo, "database", database);
//		}
		long millis = 0, lastFrame = System.currentTimeMillis();
		while (true) {
			if (millis > 5000) {
				// Write file every five seconds
				millis -= 5000;
				writeObject(kryo, "database", database);
			}
			millis += System.currentTimeMillis() - lastFrame;
			lastFrame = System.currentTimeMillis();
		}

And here is my client code:

this.logger = logger;
		logger.log(Level.PRODUCTION, "Connecting to server");
		client = new Client();
		Log.TRACE();
		
		Kryo kryo = client.getKryo();
		kryo.register(RegistrationRequest.class);
		kryo.register(RegistrationResponse.class);
//		kryo.register(String.class);
		
		client.start();
		try {
			client.connect(5000, Settings.IP, Settings.PORT);
		} catch (IOException e) {
			logger.log(Level.ERROR, e);
		}
		client.addListener(new Listener() {
		       public void received(Connection connection, Object object) {
		    	   for (NetworkListener listener : listeners) {
		    		   listener.onObjectRecieved(object);
		    	   }
		       }
		});

When I send an instance of RegistrationRequest over the server, it crashes, and I don’t know why. Any thoughts?