outsourcing this is good.
if or when we need it in future, we can try to make this more generic to handle an arbitrary number of kwds