Initial commit!

Still a lot left to implement, but the basics are there.