Learning Design patterns