First commit

Lots of new functionalities added, starting a separate branch