renamed
added the template method pattern