Needs to be completely refactored