Refactored the module structure and added setup.py