Everything pretty much done. Need some refactor.