swapped out Futures from DataStore in favour of default timeout (because we always block)

reinstate Option[Link] for retrieval
split routing tree into 3 parts
throw 500s when errors occur