open/closed principle based on composition pattern