Refactored throw_at

Basically reduces the lines of code in throw_at. Doesn't change the functionality. The next step would be a rewrite of this.

Before merging make sure everything is acting normal still.