Finishing factory pattern and singleton pattern.
Command pattern, in progress...