diff --git a/src/Contracts/ServiceProviderContract.php b/src/Contracts/ServiceProviderContract.php
new file mode 100644
index 0000000..e214263
--- /dev/null
+++ b/src/Contracts/ServiceProviderContract.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Jaeger <JaegerCode@gmail.com>
+ * Date: 2017/9/20
+ */
+
+namespace QL\Contracts;
+
+use QL\Kernel;
+
+interface ServiceProviderContract
+{
+    public function register(Kernel $kernel);
+}
\ No newline at end of file
diff --git a/src/Kernel.php b/src/Kernel.php
new file mode 100644
index 0000000..80d4686
--- /dev/null
+++ b/src/Kernel.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Jaeger <JaegerCode@gmail.com>
+ * Date: 2017/9/21
+ */
+
+namespace QL;
+
+use QL\Contracts\ServiceProviderContract;
+use QL\Providers\EncodeServiceProvider;
+
+
+class Kernel
+{
+    protected $providers = [
+        EncodeServiceProvider::class
+    ];
+
+    protected $binds = [];
+
+    public function bootstrap()
+    {
+        $this->registerProviders();
+
+        return $this;
+    }
+
+    public function registerProviders()
+    {
+        foreach ($this->providers as $provider) {
+            $this->register(new $provider());
+        }
+    }
+
+    public function bind($name, $provider)
+    {
+        $this->binds[$name] = value($provider);
+    }
+
+    private function register(ServiceProviderContract $instance)
+    {
+        $instance->register($this);
+    }
+
+
+}
\ No newline at end of file
diff --git a/src/Providers/EncodeServiceProvider.php b/src/Providers/EncodeServiceProvider.php
new file mode 100644
index 0000000..ae769f2
--- /dev/null
+++ b/src/Providers/EncodeServiceProvider.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Jaeger <JaegerCode@gmail.com>
+ * Date: 2017/9/20
+ */
+
+namespace QL\Providers;
+
+use QL\Contracts\ServiceProviderContract;
+use QL\Kernel;
+use QL\Services\EncodeService;
+
+class EncodeServiceProvider implements ServiceProviderContract
+{
+    public function register(Kernel $kernel)
+    {
+        $kernel->bind('encoder',function (){
+            return new EncodeService();
+        });
+    }
+}
\ No newline at end of file
diff --git a/src/QueryList.php b/src/QueryList.php
index 5ac626d..4f17075 100644
--- a/src/QueryList.php
+++ b/src/QueryList.php
@@ -21,16 +21,16 @@ class QueryList
     protected $document;
     protected $rules;
     protected $range = null;
-    protected $encoder;
+    protected $kernel;
 
     /**
      * QueryList constructor.
      */
     public function __construct()
     {
+        $this->kernel = (new Kernel())->bootstrap();
     }
 
-
     /**
      * @return mixed
      */
diff --git a/src/Services/EncodeService.php b/src/Services/EncodeService.php
new file mode 100644
index 0000000..fa16643
--- /dev/null
+++ b/src/Services/EncodeService.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Jaeger <JaegerCode@gmail.com>
+ * Date: 2017/9/20
+ */
+
+namespace QL\Services;
+
+class EncodeService
+{
+
+}
\ No newline at end of file