It would be a huge, messy change but state should be indexed such that ```hs compose :: Action f r o s1 s2 e -> Action f r o s2 s3 e -> Action f r o s1 s3 e ```