Initial draft for adding Route model and APIs

It doesn't - named return values are discouraged in big complex functions, but not small simple functions.