work on the indexed state monad
state monad indexed