Lots of work

Not functional yet.