Initial upload with documentation
First commit with code and tests.