rearrange code
simplify equals
StringBuffer replaced with StringBuilder
add new files
add new files
add new files
add new files