requires v 3.0+ of R