ditch abort function in favor of raising an exception