hooks should run in its own method incase we don't want to actually run them, also thread safety