Initial commit of source code and test code