Remove sensitivity to order in evaluation

Scala allows you to declare a class after it's use, modified (and
simplified for that matter) the implementation to do the same.