Overhaul

Only aim of this is quality code