First version here.
Tests need to be created.