Initial commit. This still needs some cleanup, but feature wise, it should be all set.