wrapped subprocess calls in command object so they do not run indefinitely