moves all of the server stuff into the interface module, also simplifies the interface quite a bit, shows what happens when you think about how you would like the default interface to be, but it turns out to be annoyingly verbose when you go to actually implement the interface. Adds min and max size to param decorator