#8 added Command interface