Java like
Using Strategy
first generics intro: abstract over parameter type
second generics intro: abstract over return type
reuse the Function1 from std lib
function literals
 use inline function literals
day1-end-all-options