diff --git a/src/Plugin/PatternInterface.php b/src/Plugin/PatternInterface.php
index be8898a392f51d5e1085a1721dd33c166ac05857..3658c420638c380e1e674ef1381989443062ee88 100644
--- a/src/Plugin/PatternInterface.php
+++ b/src/Plugin/PatternInterface.php
@@ -9,4 +9,24 @@ namespace Drupal\ui_patterns\Plugin;
  */
 interface PatternInterface {
 
+  /**
+   * Get theme implementation for current pattern.
+   *
+   * @see ui_patterns_theme()
+   *
+   * @return array
+   *    Theme implementation array.
+   */
+  public function getThemeImplementation();
+
+  /**
+   * Get library definitions for current pattern.
+   *
+   * @see ui_patterns_library_info_build()
+   *
+   * @return array
+   *    Library definitions array.
+   */
+  public function getLibraryDefinitions();
+
 }
diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php
index 5a9091ab631e88690fe954854202705bccd57e4f..254f8a25981bebf0bc50893637baf7044baeb691 100644
--- a/src/UiPatternsManager.php
+++ b/src/UiPatternsManager.php
@@ -37,20 +37,6 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
     $this->setCacheBackend($cache_backend, 'ui_patterns', ['ui_patterns']);
   }
 
-  /**
-   * Get pattern object.
-   *
-   * @param string $id
-   *    Pattern ID.
-   *
-   * @return \Drupal\ui_patterns\Plugin\PatternBase
-   *    Pattern object.
-   */
-  public function getPattern($id) {
-    // @todo should we statically cache this?
-    return $this->getFactory()->createInstance($id);
-  }
-
   /**
    * Get pattern objects.
    *
@@ -58,10 +44,9 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    *    Pattern objects.
    */
   public function getPatterns() {
-    // @todo should we statically cache this?
     $patterns = [];
     foreach ($this->getDefinitions() as $definition) {
-      $patterns[] = $this->getPattern($definition->id());
+      $patterns[] = $this->getFactory()->createInstance($definition->id());
     }
     return $patterns;
   }
diff --git a/tests/src/Kernel/UiPatternsManagerTest.php b/tests/src/Kernel/UiPatternsManagerTest.php
index 75023c3b28cf2ec6e8db58152c264b2b570b510e..f22b0c16ba445d4e3f45ea0262bee22f9f26f16d 100644
--- a/tests/src/Kernel/UiPatternsManagerTest.php
+++ b/tests/src/Kernel/UiPatternsManagerTest.php
@@ -20,10 +20,10 @@ class UiPatternsManagerTest extends AbstractUiPatternsTest {
    */
   public function testGetPattern() {
     $manager = UiPatterns::getManager();
+    $definitions = $manager->getDefinitions();
 
-    foreach ($manager->getDefinitions() as $definition) {
-      $pattern = $manager->getPattern($definition->id());
-      assert($pattern->getBaseId(), equals($definition->id()));
+    foreach ($manager->getPatterns() as $pattern) {
+      assert($pattern->getBaseId(), equals($definitions[$pattern->getPluginId()]->id()));
     }
   }