separate management command from the actions so it's easier to call them from Python