refactor command to abstract + concrete commands