this version should be more efficient on POCL