pull down to refresh

What started out as me improving SN's rendering performance, has led to refactoring a significant portion of the codebase.

106 files changed, 941 insertions(+), 2213 deletions(-)

I'm almost happy with it. I had been putting off the refactor and I think it was wearing on me.