lots of changes; restructuring the whole app