factored commands