 
         let section = indexPath.section
         if let dataSource = view?.dataSource {
+            switch view!.headerPosition {
+            case .Embedding:
+                switch indexPath.row {
+                case 0:
+                    return dataSource.shelfView(view!, heightForHeaderInSection: section)
+                default:
+                    break
+                }
+            default:
+                break
+            }
+        }
+        return _tableView(tableView, heightForRowAtIndexPath: indexPath)
+    }
+
+    func _tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
+        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
    }
}


    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        if let dataSource = view?.dataSource {
            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
