added get_or_throw and validate
improved method