template inheritance and purchase model