i've never really seen this before though. self is just `this`, whatever `this` happens to be in the function