extend relevant interfaces for abstract types

Implements the necessary interfaces for abstract types