this works great.  needs a little more code to cover an imagined edge case.