Alot of refactoring and clean up, theres some new bugs/missing functionality that still needs to fixed