Added several classes, some implementation and ideas on how to make it work