splitted template method