         
         // Update content view
         
-        contentView?.frame = bounds
+        self.contentView?.frame = bounds
     }
     
-    public func setContentView<ContentViewType: UIView>(ofType contentViewType: ContentViewType.Type, fromNibWithClassNameLocatedInBundle bundle: Bundle?, withConfigurationBlock configurationBlock: ((_ contentView: ContentViewType) -> Void)?) {
+    public func setContentView<ContentView: UIView>(ofType contentViewType: ContentView.Type, fromNib nibQuery: NibQuery, locatedInBundle bundleQuery: BundleQuery, andConfigure configureContentView: ((_ contentView: ContentView) -> Void)?) {
         // Create new content view
         
-        let newContentView = ContentViewType.from(nib: .byClassName, inBundle: .byValue(bundle: bundle ?? .main))
+        let viewInitializer = ViewInitializer(viewClass: ContentView.self)
+        let newContentView = viewInitializer.view(fromNib: nibQuery, locatedInBundle: bundleQuery)
         
         // Update current content view
         
-        contentView = newContentView
+        self.contentView = newContentView
         
         // Configure new content view if needed
         
-        configurationBlock?(newContentView)
+        configureContentView?(newContentView)
     }
     
     // MARK: Private object methods

    deinit {
        // Remove references
        
        _contentView = nil
    }
    
    // MARK: Outlets

    
    public override init(frame: CGRect) {
        super.init(frame: frame)
        self.customInitialization()
    }
    
    public required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.customInitialization()
    }
    
    // MARK: Deinitializer
