Initial commit. It compiles, runs and tests pass.