refactored into two methods
handle missing commands
support columns as the primary divider