Are there any cases where you would want to use just ascent rather then both together.  If not then it might be worth wrapping both in a single function to save the ascent + descent code everywhere.