Another Re-Write :D lots of fixes :3