Feels like this needs to be gone over to polish up a lot of little issues, but if you're willing to do the work yourself, and it's mostly pretty obvious how things should be, there's a lot of compelling ideas in here to play with.