All basic functions done, tons of refactoring needed