Initial commit, lacks doc and tests.