finish template method pattern