trailing whitespace deleted