Restructured the entire pyvisi module to accommodate more features and to make it more scalable for future extensions.