write up implementation
proper full state