add optional dependencies and more python versions.