Re #4: Reorg a little and add optional message string