Further separation into objects/handlers/etc.
Almost done