no need to eval state blocks
treat states more like types