invent class IHasOwner<T> to simplify owner management