Major code overhaul, you should probably hard reset for this one :P