used steven's exception throwing as an example, this should be more helpful