Refactored this a bit and cleaned up.

Really cleaned out the services, need to talk to @xerkus about handling
forms/input filters in the services cleanly.

Still missing tests but it good progress so far.
@ocramius, if you would care to review :)?