Should the run_callbacks call be a block around the rest of the code? This way it will handle before and around callbacks as well as after.