diff --git a/manuscript/Book.txt b/manuscript/Book.txt
index 4d18350..0c61cb1 100644
--- a/manuscript/Book.txt
+++ b/manuscript/Book.txt
@@ -29,8 +29,10 @@ chapter-02-1-5.txt
chapter-02-1-6.txt
chapter-02-1-7.txt
chapter-03.txt
-chapter-03-1.txt
-chapter-03-2.txt
+chapter-03-1-1.txt
+chapter-03-1-2.txt
+chapter-03-1-3.txt
+chapter-03-1-4.txt
chapter-04.txt
chapter-04-1.txt
chapter-04-2.txt
diff --git a/manuscript/chapter-02-1-1.txt b/manuscript/chapter-02-1-1.txt
index 81e07e3..9c3e09b 100644
--- a/manuscript/chapter-02-1-1.txt
+++ b/manuscript/chapter-02-1-1.txt
@@ -1,6 +1,6 @@
{::pagebreak :/}
-## Ch 2.1.1 Groups controller 的 show 裡面撈出相關的 Post
+## Ch 2.1.1 在 Groups controller 的 show 裡面撈出相關的 Post
到 `app/controllers/groups_controller.rb`,將 show 修改成以下內容
diff --git a/manuscript/chapter-02.txt b/manuscript/chapter-02.txt
index 6f24633..7f6c142 100644
--- a/manuscript/chapter-02.txt
+++ b/manuscript/chapter-02.txt
@@ -8,6 +8,3 @@
* 學會 resources 的設定 ( 雙層 resources )
* 使用 before_action 整理程式碼
-
-
-##
\ No newline at end of file
diff --git a/manuscript/chapter-03-1-0.txt b/manuscript/chapter-03-1-0.txt
new file mode 100644
index 0000000..daff03e
--- /dev/null
+++ b/manuscript/chapter-03-1-0.txt
@@ -0,0 +1,44 @@
+{::pagebreak :/}
+
+## Ch 3.1.0 安裝 devise
+
+### 安裝 gem
+
+Rails 內,安裝 gem 的方式是透過 Bundler 這個工具。具體方式是修改 `Gemfile` 這個檔案,加入所需要安裝的 gem,再執行 `bundle install`,即能安裝完畢。
+
+### 安裝 devise
+
+
+[devise](https://github.com/plataformatec/devise) 是目前 Rails 界最被廣為使用的認證系統。其彈性的設計支援很多實務上的需求,如:鎖定賬號(Lockable)、需要認證(Confirmable)、取回帳號(Recoverable)、與第三方認證如 Facebook 整合( OmniAuthable)。
+
+在本書裡面我們使用的 Boostrappers 內建即幫我們安裝好 `devise` 這個 gem。
+
+不過你還是可以開一個空專案,實際裝一下練習看看。
+
+
+修改 `Gemfile`
+
+~~~~~~~~~
+gem 'devise'
+~~~~~~~~~
+
+使用 bundle 安裝
+
+`bundle install`
+
+產生必要檔案
+
+`rails g devise:install`
+
+產生 user model 檔案
+
+`rails generate devise user`
+
+
+#### devise 相關連結
+
+~~~~~~~~~
+
<%= link_to( "Sign Up" ,new_user_registration_path) %>
+ <%= link_to( "Login", new_user_session_path ) %>
+ <%= link_to("Logout",destroy_user_session_path, :method => :delete ) %>
+~~~~~~~~~
\ No newline at end of file
diff --git a/manuscript/chapter-03-1-1.txt b/manuscript/chapter-03-1-1.txt
new file mode 100644
index 0000000..e69de29
diff --git a/manuscript/chapter-03-1-2.txt b/manuscript/chapter-03-1-2.txt
new file mode 100644
index 0000000..e69de29
diff --git a/manuscript/chapter-03.txt b/manuscript/chapter-03.txt
index 5273147..1881570 100644
--- a/manuscript/chapter-03.txt
+++ b/manuscript/chapter-03.txt
@@ -1,147 +1,19 @@
# 練習作業 3 - 為 Group 加入使用者機制
-## 作業目標
-
-為討論區加入使用者機制,使用者必須能夠 註冊 / 登入,登入後才可以發表 Post,不然只能瀏覽。只有自己的 Post 才能進行修改與刪除。
+在上一章我們完成了在 Group 裡面發表文章的功能。但是通常一個討論區的機制,必須是先加入會員才能進行相關動作。所以我們必須為討論區加入使用者機制:
+使用者必須能夠 註冊 / 登入,登入後才可以發表 Post,不然只能瀏覽。只有自己的 Post 才能進行修改與刪除。
## 練習主題
-* gem / plugin 安裝與使用
-* routes 優先權與 route alias
-* [before_filter](http://apidock.com/rails/v2.3.8/ActionController/Filters/ClassMethods/before_filter) 的使用及其效果
-* 利用 before_filter : login_required 加入登入判斷
-* 為 controller 中部分 action 加上 login_required
+* 安裝 gem
+* 設定 devise
+* 撰寫全域的 method `login_required`
+* 利用 before_action 結合 login_required 加入登入判斷
* session 的使用:current_user
-
-
## 參考資料
* [devise](https://github.com/plataformatec/devise/wiki)
-## 作業解答
-
-TODO
-
-# 練習作業 4 - 為 Group 加入管理者機制以及管理者後台
-
-## 作業目標
-
-
-實作簡單的 admin 機制:
-
-* admin 擁有一個後台,可以刪改所有文章。
-* admin 可以新增文章 / 刪除文章
-* 網址是 http://groupme.dev/admin/posts
-* 有身分是 admin 的人可以進後台。
-* admin 的判別方是 column 裡加一個 boolean,判斷是否 admin。
-* 這個 attribute 必須用 attr_accessible / attr_protected 保護。
-
-## 練習主題
-
-* 學習如何實作 admin 身分
-* 利用 [attr_accessible](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_accessible) / [attr_protected](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_protected) 保護重要欄位不被竄改
-* 實作 namespace routing
-* 利用 before_filter : require_is_admin 檢查 admin 權限
-
-## 作業解答
-
-TODO
-
-# 練習作業 5 - 為文章列表加入分頁機制
-
-## 作業目標
-
-* 文章列表要能夠分頁
-* 每一頁 5 筆
-* 每篇文章要秀出現在有多少 comment 數量
-* 文章列表的排序要以發表時間以 DESC 排序。
-
-## 練習主題
-
-* 使用 [counter_cache](http://railscasts.com/episodes/23-counter-cache-column) 取代直接對資料庫的 count
-* 實作看板分頁(pagination)機制
-* 練習使用 scope 機制包裝不同 condition 的 SQL query
-
-
-## 作業解答
-
-TODO
-
-
-# 練習作業 6 - 每一篇文章可以上傳附件(圖片)
-
-
-## 作業目標
-
-發表文章時可以順便夾帶一張附件。
-
-
-## 練習主題
-
-* 使用 [form_for](http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for) :multipart => true 上傳
-多媒體
-* 學習使用 paperclip 縮圖
-
-## 參考資料
-
-[paperclip](https://github.com/thoughtbot/paperclip/wiki)
-
-## 作業解答
-
-TODO
-
-# 練習作業 7 - 撰寫自動化 Rake 以及 db:seed
-
-
-## 作業目標
-
-用 Rake 撰寫自動化步驟,生假資料。
-
-寫一個 rake 可以達成以下步驟:「砍 db => 建 db => 跑 migration => 生種子資料」,另一個 rake 是生假文章與假留言。
-
-## 練習主題
-
-* 操作 rake -T
-* 撰寫一個 task 可以自動連續執行 rake db:drop ; rake db:create ; rake db:migrate ; rake db:seed
-* 撰寫一個 task 可以執行 rake dev:fake 生假資料 ( 自己寫 namespace : dev, 裡面放一個 task 叫做 fake,fake 資料用 Populator 生) # 請自行練習
-
-
-## 參考資料
-
-* [Ruby on Rails Rake Tutorial](http://jasonseifer.com/2010/04/06/rake-tutorial)
-* [What’s New in Edge Rails: Database Seeding](http://ryandaigle.com/articles/2009/5/13/what-s-new-in-edge-rails-database-seeding)
-
-## 作業解答
-
-TODO
-
-
-# 練習作業 8 - 將 Groupme deploy 到租來的 VPS
-
-
-## 作業目標
-
-在租來的 VPS 上面建置 Ruby on Rails production 環境,使用 Ruby Enterprise Edition 與 mod_rails。使用 [Capistrano](https://github.com/capistrano/capistrano/wiki) 佈署 application。
-
-## 練習主題
-
-* 學會如何自動部署專案
-* 使用 capistrano 自動部署專案
-* 操作 cap deploy:setup
-* 操作 cap deploy
-* 操作 cap deploy:rollback
-* 操作 cap deploy:restart
-
-
-## 參考資料
-
-* [rails-nginx-passenger-ubuntu](https://github.com/jnstq/rails-nginx-passenger-ubuntu)
-* [AWDR4](http://pragprog.com/titles/rails4/agile-web-development-with-rails) deploy 章節
-
-
-## 作業解答
-
-TODO
\ No newline at end of file
diff --git a/manuscript/chapter-04.txt b/manuscript/chapter-04.txt
index e69de29..d132bd6 100644
--- a/manuscript/chapter-04.txt
+++ b/manuscript/chapter-04.txt
@@ -0,0 +1,120 @@
+# 練習作業 4 - 為 Group 加入管理者機制以及管理者後台
+
+## 作業目標
+
+
+實作簡單的 admin 機制:
+
+* admin 擁有一個後台,可以刪改所有文章。
+* admin 可以新增文章 / 刪除文章
+* 網址是 http://groupme.dev/admin/posts
+* 有身分是 admin 的人可以進後台。
+* admin 的判別方是 column 裡加一個 boolean,判斷是否 admin。
+* 這個 attribute 必須用 attr_accessible / attr_protected 保護。
+
+## 練習主題
+
+* 學習如何實作 admin 身分
+* 利用 [attr_accessible](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_accessible) / [attr_protected](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_protected) 保護重要欄位不被竄改
+* 實作 namespace routing
+* 利用 before_filter : require_is_admin 檢查 admin 權限
+
+## 作業解答
+
+TODO
+
+# 練習作業 5 - 為文章列表加入分頁機制
+
+## 作業目標
+
+* 文章列表要能夠分頁
+* 每一頁 5 筆
+* 每篇文章要秀出現在有多少 comment 數量
+* 文章列表的排序要以發表時間以 DESC 排序。
+
+## 練習主題
+
+* 使用 [counter_cache](http://railscasts.com/episodes/23-counter-cache-column) 取代直接對資料庫的 count
+* 實作看板分頁(pagination)機制
+* 練習使用 scope 機制包裝不同 condition 的 SQL query
+
+
+## 作業解答
+
+TODO
+
+
+# 練習作業 6 - 每一篇文章可以上傳附件(圖片)
+
+
+## 作業目標
+
+發表文章時可以順便夾帶一張附件。
+
+
+## 練習主題
+
+* 使用 [form_for](http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for) :multipart => true 上傳
+多媒體
+* 學習使用 paperclip 縮圖
+
+## 參考資料
+
+[paperclip](https://github.com/thoughtbot/paperclip/wiki)
+
+## 作業解答
+
+TODO
+
+# 練習作業 7 - 撰寫自動化 Rake 以及 db:seed
+
+
+## 作業目標
+
+用 Rake 撰寫自動化步驟,生假資料。
+
+寫一個 rake 可以達成以下步驟:「砍 db => 建 db => 跑 migration => 生種子資料」,另一個 rake 是生假文章與假留言。
+
+## 練習主題
+
+* 操作 rake -T
+* 撰寫一個 task 可以自動連續執行 rake db:drop ; rake db:create ; rake db:migrate ; rake db:seed
+* 撰寫一個 task 可以執行 rake dev:fake 生假資料 ( 自己寫 namespace : dev, 裡面放一個 task 叫做 fake,fake 資料用 Populator 生) # 請自行練習
+
+
+## 參考資料
+
+* [Ruby on Rails Rake Tutorial](http://jasonseifer.com/2010/04/06/rake-tutorial)
+* [What’s New in Edge Rails: Database Seeding](http://ryandaigle.com/articles/2009/5/13/what-s-new-in-edge-rails-database-seeding)
+
+## 作業解答
+
+TODO
+
+
+# 練習作業 8 - 將 Groupme deploy 到租來的 VPS
+
+
+## 作業目標
+
+在租來的 VPS 上面建置 Ruby on Rails production 環境,使用 Ruby Enterprise Edition 與 mod_rails。使用 [Capistrano](https://github.com/capistrano/capistrano/wiki) 佈署 application。
+
+## 練習主題
+
+* 學會如何自動部署專案
+* 使用 capistrano 自動部署專案
+* 操作 cap deploy:setup
+* 操作 cap deploy
+* 操作 cap deploy:rollback
+* 操作 cap deploy:restart
+
+
+## 參考資料
+
+* [rails-nginx-passenger-ubuntu](https://github.com/jnstq/rails-nginx-passenger-ubuntu)
+* [AWDR4](http://pragprog.com/titles/rails4/agile-web-development-with-rails) deploy 章節
+
+
+## 作業解答
+
+TODO
\ No newline at end of file