actually use the subtract stack
some minor fixed around emptiness. One of these is just a cleanup, the other would have been a bug but isn't reached through the normal API. This needs better testing