wrapped up for make some of the commands become more robust
add diff