add Template Pattern