Implemeted Template method pattern