Observer and decorator patterns done