start to play with design patterns