Initial commit

This is kind of working but needs some corrections and documentation :P