created AbstractCommand class for making command line argument parsing and usage generation simpler when creating new commands