change delegate semantics