improved string handling
Put string matching through the ringer