Not sure I really buy into the template method pattern here - I thought about it, and though it makes it more ugly