add SetXxx shorthand funcs
prevent out of bound runtime errors
a more idiomatic approach
updated readme
added more test funcs