The idea is to implement the non-concurrent versions, and then convert them to concurrent versions using nested top actions.