massive changes to make tops work correctly

This is why we need unit tests.... :(

I hate not haveing a good framework for this.