use native instead of abstract and throw new UOE