simplify these classes; may not be used as explicit types (may become opaque)