Basic version working with tests.