introduced real opolymorphism through abstract