copying model properties was too slow, so use more optimized inheritance approach

This approach is brittle to changes in model properties, so it should
really be refactored to put inherited properties underneath a single
object