I reworked this class to have its required arguments listed first (now without defaults), followed by optional arguments. This is similar to a refactoring we did during the code sprint (not sure what class it was). We don't need to check for ```None``` anymore because those arguments are now required arguments. It seems strange to keep the checks here, because if we're checking them for ```None```, we should also be checking them to make sure they're not ```dict```s, ```list```s, etc. which gets really messy. I also think this constructor signature is more explicit than the previous one.