Initial File commit

As far as I can tell, it all works. More documentation to come.