We don't need FlexibleInstances
Moved some of the window targeting functions into type classes