Pushing all outstanding changes to refactor branch