Introduce a bunch of service objects

wow, much objects, such OOP