added exception classes
payment() should be a static method that redirects