implemented commands
made some modifications
modified interface

maybe an abstract class is better?