add some explanation about pattern