Better structure & a lot of new code