Doing some experiments, need to refactor these changes if I keep them. Functionality is exactly the same