First commit, implementation ready for test