design pattern and little revise