Initial commit. This is work in progress - this is definitely not going to work the way it is now.