ew, that is ugly. (but it works!)
how to recurse this?