allow actual function instead of only string for `columns` object