added empty,never,throw