uses distutils