probably useless inheritence-based approach
probably useless inheritence-based approach