borg pattern
command pattern
adapter pattern