A lot of refactoring, and a messaging system, and created a super class
for List commands