breaking this app down to build a lighter, better version (that won't need to be updated itself)