model implementation details included