Hell lot of refactoring

Начал рефакторить и не смог остановиться.
Теперь самое страшное для понимания место - main_loop, зато во всех остальных местах всё красиво и благородно. %)