type safe for values