revert back to first implementation