Initial commit

Basic features implemented, some more advanced ones not yet done