allow more general base class