propagate exception properly (as suggested by marlowsd)