Please don't edit your code yet, I'm still reading it through, trying to get better understanding.