lots of changes for register definitions