changed to bubble error up via callback instead of throwing exception