diff --git a/.tern-project b/.tern-project
new file mode 100644
index 0000000000..0a2f08812f
--- /dev/null
+++ b/.tern-project
@@ -0,0 +1,12 @@
+{
+ "libs": [
+ "browser"
+ ],
+ "plugins": {
+ "node": {},
+ "modules": {},
+ "requirejs": {},
+ "es_modules": {},
+ "jasmine": {}
+ }
+}
\ No newline at end of file
diff --git a/01 - JavaScript Drum Kit/README.md b/01 - JavaScript Drum Kit/README.md
new file mode 100644
index 0000000000..6f87d67e62
--- /dev/null
+++ b/01 - JavaScript Drum Kit/README.md
@@ -0,0 +1,38 @@
+# ReadMe
+
+## Knowledge
+
+### 1. Document method `Document.querySelector()`
+https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
+> The Document method `querySelector()` returns the first `Element` within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.
+
+### 2. CSS Attribute selector
+https://www.w3schools.com/cssref/css_selectors.asp
+
+CSS selector works in the same way in JavaScript:
+
+| Selector | Example | Example description |
+|---|---|---|
+| `[attribute=value]` | `[target=_blank]` | Selects all elements with target="_blank"
+
+### 3. Audio `play()` Method
+https://www.w3schools.com/jsref/met_audio_play.asp
+
+#### 3.1 HTML Audio/Video DOM `currentTime` Property
+```JavaScript
+var vid = document.getElementById("myVideo");
+vid.currentTime = 5;
+```
+> The currentTime property sets or returns the current position (in seconds) of the audio/video playback.
+
+### 4. `Element.classList`
+https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
+>The `Element.classList` is a read-only property that returns a live `DOMTokenList` collection of the class attributes of the element. **This can then be used to manipulate the class list**.
+
+>Using `classList` is a convenient alternative to accessing an element's list of classes as a space-delimited string via `element.className`.
+
+### 5. HTMLElement: `transitionend event`
+https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/transitionend_event
+
+>The `transitionen` event is fired when a CSS transition has completed. In the case where a transition is removed before completion, such as if the `transition-property` is removed or `display` is set to none, then the event will not be generated.
+
diff --git a/01 - JavaScript Drum Kit/index-START.html b/01 - JavaScript Drum Kit/index-START.html
index 4070d32767..898c714e74 100644
--- a/01 - JavaScript Drum Kit/index-START.html
+++ b/01 - JavaScript Drum Kit/index-START.html
@@ -59,6 +59,32 @@
diff --git a/02 - JS and CSS Clock/README.md b/02 - JS and CSS Clock/README.md
new file mode 100644
index 0000000000..1b90f7b134
--- /dev/null
+++ b/02 - JS and CSS Clock/README.md
@@ -0,0 +1,9 @@
+# Knowledge
+
+## 1. `transform-origin` CSS property
+
+https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin
+
+> The `transform-origin` CSS property sets the origin for an element's transformations.
+
+100% along the x-axis will put that pivot point on the very right-hand side.
diff --git a/02 - JS and CSS Clock/index-START.html b/02 - JS and CSS Clock/index-START.html
index 7a6d27d5bd..5568ee9897 100644
--- a/02 - JS and CSS Clock/index-START.html
+++ b/02 - JS and CSS Clock/index-START.html
@@ -62,12 +62,37 @@
background: black;
position: absolute;
top: 50%;
+ /* move pviot to right end */
+ transform-origin: 100%;
+ transform: rotate(90deg);
+ transition: all 0.05s;
+ /* how it moves */
+ transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);
+
}
-