Fully working with passed tests.