Use Object for delegate and explicit cast instead of trying covariant return type
Implement interface proxying