Adds some refactoring around logic flow to be more notification based