Initial check in

Initial check in with most of the functionality in place.