Made everything much simpeler, need to rewrite all of the traits now though..