I was trying to keep this as abstract as possible so functions would only do one thing at a time.