Initial commit of code and tests