add
add changes
clean up code to be more understandable