Tons of addtions. Working, but needs tons of refactoring.