using a Try implementation instead of Result