base type implementation