Refactor Room into an interface, to be implemented (rather than extended) by RoomNode