Less indentation
Shuffle some things around, impl more traits!