Initial commit adding tests and source