Generics, put things in better places, try and make it easier to implement app and client handlers