+немного рефакторинга, дописал тесты