Continue massive refactor:

  - [~] Massive Refactor
    - [x] extract classes to single out functionality and testing,
          future task will be to break apart again
    - [x] make to work after crazy refactor => must be done one command at a
          time