attempt to merge the two approaches