opt: StringBuilder instead of StringBuffer