There was no reason for this to be abstract
now it's fairly standalone
Did some refactoring. Added a barebones test class.
That was no longer needed.
Moved the static methods inside the CommandSystem class to avoid
confusion