 
     func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
         if let dataSource = view?.dataSource {
-            return dataSource.shelfView(view!, viewForHeaderInSection: section)
+            switch view!.headerPosition {
+            case .Floating:
+                return dataSource.shelfView(view!, viewForHeaderInSection: section)
+            default:
+                break
+            }
         }
 
         return nil
     }
 
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+
+        switch view!.headerPosition {
+        case .Floating:
+            return _tableView(tableView, cellForRowAtIndexPath: indexPath)
+        case .Embedding:
+            switch indexPath.row {
+            case 0:
+                return _embedding(tableView, cellForRowAtIndexPath: indexPath)
+            default:
+                return _tableView(tableView, cellForRowAtIndexPath: indexPath)
+            }
+        }
+    }
+
+    // TODO: Refactor
+    func _embedding(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+
+        let cell = UITableViewCell(style: .Default, reuseIdentifier: nil)
+
+        let header = view!.dataSource!.shelfView(view!, viewForHeaderInSection: indexPath.section)
+        if let header = header {
+            cell.contentView.addSubview(header)
+        }
+
+        return cell
+    }
+
+    func _tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
         let view = tableView.dequeueReusableCellWithIdentifier(SectionReuseIdentifier, forIndexPath: indexPath) as SectionView
 
         // TODO: create only visible cells


        let section = indexPath.section
        if let dataSource = view?.dataSource {
            switch dataSource.shelfView(view!, contentModeForSection: section) {
            case .Horizontal:
                return _horizontal(tableView: tableView, section: section)

                break
            }
        }
        return 60
    }
}
