Suppose I have an expression
test = a[b[e[g, h], f], c, d];
I like to break it up into { a[b,c,d], b[e,f], e[g,h] }
This is a start
Cases[test, _[__], {0, Infinity}]
{e[g, h], b[e[g, h], f], a[b[e[g, h], f], c, d]}
but I haven't figured out how to use Level to get the result I want.