ADD: facade, command, factory patterns