refactoring of Service, Client - mostly internal for better DRY, api key is now required for instantiating Service. See commit line notes for more details