                 }
             }
             
-            self.init(dictionary: dic)
+            self.entityType = .Dictionary(dic)
             
         default:
             print("value \(plistObject) is not a valid property list type")
-            self.init(string: "")
+            self.entityType = .String("")
             assertionFailure("Use only property list complient class.")
         }
-        
-    }
-    
-    private var entityType : EntityType
-    private enum EntityType {
-        case String(Swift.String)
-        case Number(NSNumber)
-        case Date(NSDate)
-        case Data(NSData)
-        case Array([Plist])
-        case Dictionary([Swift.String : Plist])
-    }
-    
-    //MARK:- Entity Creation
-    private init(plist: Plist) {
-        entityType = plist.entityType
-    }
-    private init(bool: Bool) {
-        entityType = .Number(bool)
-    }
-    private init(int: Int) {
-        entityType = .Number(int)
-    }
-    private init(float: Float) {
-        entityType = .Number(float)
-    }
-    private init(string: String) {
-        entityType = .String(string)
-    }
-    private init(date: NSDate) {
-        entityType = .Date(date)
-    }
-    private init(data: NSData) {
-        entityType = .Data(data)
-    }
-    private init(array: [Plist]) {
-        entityType = .Array(array)
-    }
-    private init(dictionary: [String : Plist]) {
-        entityType = .Dictionary(dictionary)
     }
 }
 

import Swift

public struct Plist {
    
    /** Create a Plist from a Raw values that are Plist Convertible or Plist.
    @warning Will crash if not convertible

                let p = Plist(plistObject: any)
                pAr.append(p)
            }
            self.entityType = .Array(pAr)
            
        case let array as [Plist]:
            self.entityType = .Array(array)
            
        case let dictionary as [String : Plist]:
            self.entityType = .Dictionary(dictionary)
            
        case let dictionary as NSDictionary:
            var dic : [String : Plist] = [:]
