re-introduce abstract registers