optimized for semicolon and space