diff --git a/src/chains.rs b/src/chains.rs
index 4556946649a..bd9f302824b 100644
--- a/src/chains.rs
+++ b/src/chains.rs
@@ -20,7 +20,7 @@
// argument function argument strategy.
use rewrite::{Rewrite, RewriteContext};
-use utils::make_indent;
+use utils::{first_line_width, make_indent};
use expr::rewrite_call;
use syntax::{ast, ptr};
@@ -51,19 +51,67 @@ pub fn rewrite_chain(mut expr: &ast::Expr,
let indent = offset + extra_indent;
let max_width = try_opt!(width.checked_sub(extra_indent));
- let rewrites = try_opt!(subexpr_list.into_iter()
- .rev()
- .map(|e| {
- rewrite_chain_expr(e,
- total_span,
- context,
- max_width,
- indent)
- })
- .collect::