     
     //MARK: collectionView delegate
     
-    func scrollViewWillBeginDragging(_ scrollView:UIScrollView)
-    {
-    }
+    func scrollViewWillBeginDragging(
+        _ scrollView:UIScrollView) { }
     
     func scrollViewDidEndDecelerating(
-        _ scrollView:UIScrollView)
-    {
-    }
+        _ scrollView:UIScrollView) { }
     
     func scrollViewDidEndDragging(
         _ scrollView:UIScrollView,
-        willDecelerate decelerate:Bool)
-    {
-    }
-    
-    func scrollViewDidEndScrollingAnimation(_ scrollView:UIScrollView)
-    {
-    }
-    
-    func scrollViewDidScroll(_ scrollView:UIScrollView)
-    {
-    }
+        willDecelerate decelerate:Bool) { }
+    
+    func scrollViewDidEndScrollingAnimation(
+        _ scrollView:UIScrollView) { }
+    
+    func scrollViewDidScroll(
+        _ scrollView:UIScrollView) { }
     
     func collectionView(
         _ collectionView:UICollectionView,

            withReuseIdentifier:header.reusableIdentifier)
    }
    
    final func cellAtIndex(indexPath:IndexPath) -> Cell
    {
        let cell:Cell = cellAtIndex(
            reusableIdentifier:Cell.reusableIdentifier,
            indexPath:indexPath)
        
        return cell
    }
    
    final func cellAtIndex(reusableIdentifier:String, indexPath:IndexPath) -> Cell
    {
        let cell:Cell = collectionView.dequeueReusableCell(
            withReuseIdentifier:reusableIdentifier,
            for:indexPath) as! Cell
        
        return cell
    }

    
    //MARK: internal
    
    final func registerCell(
        cell:Cell.Type)
    {
        collectionView.register(
            cell,
            forCellWithReuseIdentifier:cell.reusableIdentifier)
    }
    
    final func registerFooter(
        footer:UICollectionReusableView.Type)
    {
        collectionView.register(
            footer,
