trailing whitespace and tabs removed