     
     self.setupViewHierarchy()
     self.configureConstraints()
-    
-    var t = CATransform3DIdentity
-//    t.m44 = -1.0
-//    t.m13 = 1.0
-//    t.m23 = 0.0
-//    t.m33 = 0.0
-//    t.m34 = -0.5
-
-    
-//    UIView.animateWithDuration(3.0, delay: 0.0, options: .Autoreverse, animations: { () -> Void in
-//          self.simulationView.layer.transform = t
-//      }) { (complete: Bool) -> Void in
-//        self.simulationView.layer.transform = CATransform3DIdentity
-//    }
-    
-    
+    self.addTapGestureToView()
+    self.drawSmileyFace(self.simulationView)
+  }
+  
+  override func viewWillAppear(animated: Bool) {
+    super.viewWillAppear(animated)
+    
+    self.simulationView.clipsToBounds = false
+    self.simulationView.layer.masksToBounds = false
+  
   }
   
   override func didReceiveMemoryWarning() {

import UIKit

class GridView: UIView {
  
  override func drawRect(rect: CGRect) {
    let xt = rect.origin.x; let yt = rect.origin.y

    // Dispose of any resources that can be recreated.
  }
  
  
  internal func addTapGestureToView() {
    let gesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tappedView:")
    self.simulationView.addGestureRecognizer(gesture)
  }
  
  internal func tappedView(sender: AnyObject?) {
    var t = CATransform3DIdentity
//    t.m14 = -0.1
//    t.m24 = -0.1
//    t.m34 = -1.0
//    t.m41 = 100.0
//    t.m42 = 50.0
//    t.m43 = -1.0
    
//    t.m13 = 1.0
    t.m23 = -1.0
    t.m33 = -0.5
    
    
    self.simulationView.layer.anchorPoint = CGPointMake(0.0, 0.0)
//    self.simulationView.layer.anchorPointZ = -150.0
    self.simulationView.layer.position = CGPointMake(CGRectGetMinX(self.simulationView.frame) - CGRectGetMidX(self.simulationView.bounds),CGRectGetMinY(self.simulationView.frame) - CGRectGetMidY(self.simulationView.bounds))
    
    
    UIView.animateWithDuration(5.0, delay: 0.0, options: [.Repeat], animations: { () -> Void in
      self.simulationView.layer.transform = t
//      self.simulationView.layer.anchorPointZ = -200.0
      }) { (complete: Bool) -> Void in
        //        self.simulationView.layer.transform = CATransform3DIdentity
//        self.simulationView.layer.anchorPoint = CGPointMake(0.5, 0.5)
    }

  }
  
  internal func configureConstraints() {
    self.simulationView.snp_makeConstraints { (make) -> Void in
