Частичный рефакторинг, ещё очень много нужно разбирать и переписывать.