extracted virtualenv into its own module