internal messages go to stderr