avoid extra hops through the external API in state transitioning
improve internal hook functionality