diff --git a/README.md b/README.md
index 12587e4..5a6e8c8 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,30 @@
-# Hubspot API
+# HubSpot API

+This module provides a way to load interact with the HubSpot PHP library which connects to the HubSpot API.

+## Setup
+
+After installing the module, you will need to provide an API key.
+
+Go to `admin/config/development/hubspot_api` and provide a key.
+
+Using Drush:
+`drush cset hubspot_api.settings access_key "demo"`
+
+## Demo
+
+HubSpot provides a test account described in, `https://developers.hubspot.com/docs/overview`.
+
+You can use the `demo` API key to access the demo account.
+
+## HubSpot PHP library documentation
+
+See `vendor/ryanwinchester/hubspot-php/README.md`
+
+## Quick testing
+
+You can use the following Drush command to test the setup. This loads the service, creates a handler for the API and then loads a list of contacts.
+
+```
+drush ev '$manager = \Drupal::service("hubspot_api.manager"); $handler = $manager->getHandler(); print json_encode($handler->contacts()->all(["count" => 10,"property" => ["firstname", "lastname"]]));'
+```
diff --git a/config/install/hubspot_api.settings.yml b/config/install/hubspot_api.settings.yml
new file mode 100644
index 0000000..461a9ad
--- /dev/null
+++ b/config/install/hubspot_api.settings.yml
@@ -0,0 +1 @@
+access_key: ''
diff --git a/hubspot_api.routing.yml b/hubspot_api.routing.yml
new file mode 100644
index 0000000..0ef8916
--- /dev/null
+++ b/hubspot_api.routing.yml
@@ -0,0 +1,9 @@
+hubspot_api.settings:
+  path: 'admin/config/development/hubspot_api'
+  defaults:
+    _form: '\Drupal\hubspot_api\Form\SettingsForm'
+    _title: 'HubSpot API Settings'
+  options:
+    _admin_route: TRUE
+  requirements:
+    _permission: 'administer site configuration'
diff --git a/hubspot_api.services.yml b/hubspot_api.services.yml
new file mode 100644
index 0000000..5a1ad78
--- /dev/null
+++ b/hubspot_api.services.yml
@@ -0,0 +1,4 @@
+services:
+  hubspot_api.manager:
+    class: Drupal\hubspot_api\Manager
+    arguments: ['@config.factory']
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
new file mode 100644
index 0000000..e920d25
--- /dev/null
+++ b/src/Form/SettingsForm.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\hubspot_api\Form;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Configure HubSpot API settings.
+ */
+class SettingsForm extends ConfigFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'hubspot_api_settings';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return [
+      'hubspot_api.settings',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $config = $this->config('hubspot_api.settings');
+
+    $form['access_key'] = array(
+      '#type' => 'textarea',
+      '#title' => $this->t('Access Key'),
+      '#default_value' => $config->get('access_key'),
+    );
+
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $this->configFactory->getEditable('hubspot_api.settings')
+      ->set('access_key', $form_state->getValue('access_key'))
+      ->save();
+
+    parent::submitForm($form, $form_state);
+  }
+}
diff --git a/src/Manager.php b/src/Manager.php
new file mode 100644
index 0000000..eab0c61
--- /dev/null
+++ b/src/Manager.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Drupal\hubspot_api;
+
+use Drupal\Core\Config\ConfigFactoryInterface;
+use SevenShores\Hubspot\Factory;
+
+/**
+ * Hubspot API Manager
+ */
+class Manager {
+
+  /**
+   * The config for HubSpot.
+   *
+   * @var \Drupal\Core\Config\ImmutableConfig
+   */
+  protected $config;
+
+  /**
+   * Constructs a new HubSpot service instance.
+   *
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The config factory.
+   */
+  public function __construct(ConfigFactoryInterface $config_factory) {
+    $this->config = $config_factory->get('hubspot_api.settings');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getHandler() {
+    $key = $this->config->get('access_key');
+    if (empty($key)) {
+      // THROW ERROR HERE
+      return NULL;
+    }
+
+    return Factory::create($key);
+  }
+
+}
