WrapperTypes abstraction for user to implement their own wrapper classes