core: use boxes to transfer ownership.

I understand boxes thanks to this awesome guide:
  http://doc.rust-lang.org/guide-ownership.html