introduced DTO layer to account for client input
added possibility for server-side, pre-persistence validity checking