onValues instead of onValue
flatMap can take a bunch of functions - who knew?