Most preliminary work done, just need to scrub up a few small isues