Implement highlighting

My first go-around at implementing highlighting, it seems to work pretty well.

This PR still requires tests to be added.