more flexible register defs
move macros around
some formatting
setter for indexed SHP