Initial commit with most of the demo functions in place