less fancy exception handling