cached messagebox rather than finding it each time print is called