copy from R because ::: is forbidden by crandalf