Initial Commit

Some things may be unnecessary (it's been a while since I coded it) but
the core components are there.