Use a StringBuffer since there are a lot of concatenations