Fix #1135 : Implement caption route, add tests