better type of commands
ShapeFactory refactor