TP design pattern command