abstracted detail state