Wersja ostateczna, po refactoringu.