run method is now simply a wrapper as intended. refactored to more logically divide concerns. presentation to user has been improved.