abstract state implementation