some design pattern example on the git hub