added selfCatch