First commit

A lot of working features already here