using native instead of abstract or throw new UOE()