First commit with code, tests and (hopeful) travis CI support.