This one is nice. I want to refactor this at some point, because methods and names are really not where they should belong.