first commit. missing docs, tests, etc.