fixed a potential error condition which could prevent the VM from shutting down
refactored the different user data types into classes