bringing over the new implementation