Before rebase
Basic functionality is implemented.