changed the way the ! return type works