move CPSR stuff to its own object