REFACTOR COMPLETE