add a Template Method pattern
add a Hook Operation pattern
add a Prototype pattern