Немного причесал код и тесты