factored out dollar-soup with with(), swapped NA with NULLS