Added command pattern
Observer broadcasting
Visitor