First pass, functional - docs and examples to come