using boost::optional for simulating maybe monad
refactor maybeFind using template function. maybe monad bind is simulated
using return shortcut