switched to using inherited templates to make the interface more consistent