play with some software patterns