updated to using an interface instead of a subclass, added command