 	that is declared as a protocol. Once that is fixed, the type of this variable will
 	be changed back to an optional CollapsibleViewDelegate
 	*/
-	@IBOutlet weak var delegate: AnyObject?
+	@IBOutlet public weak var delegate: AnyObject?
 	
 	/**
 	Container for the disclosure button and label
 	*/
-	var titleView = NSView(frame: NSZeroRect)
+	public var titleView = NSView(frame: NSZeroRect)
 	
 	/**
 	The disclosure button
 	*/
-	var titleDisclosureButton = NSButton(frame: NSZeroRect)
+	public var titleDisclosureButton = NSButton(frame: NSZeroRect)
 	
 	/**
 	The title label
 	*/
-	var titleText = NSTextField(frame: NSZeroRect)
+	public var titleText = NSTextField(frame: NSZeroRect)
 	
 	/**
 	The container for the content view. This is the view that expands/collapses
 	*/
-	var expansionView = NSView(frame: NSZeroRect)
+	public var expansionView = NSView(frame: NSZeroRect)
 	
 	/**
 	The height of the expansionView. Used to restore expansion back to the expanded state.
 	*/
-	var expansionHeight = CGFloat(0)
+	private var expansionHeight = CGFloat(0)
 	
 	/**
 	The constraint that animates the expand/collapse animation. Note that it isn't set up until
 	the updateConstraints() function is run.
 	*/
-	var expansionConstraint: NSLayoutConstraint!
+	private var expansionConstraint: NSLayoutConstraint!
 	
 	override public func updateConstraints() {
 		self.titleView.translatesAutoresizingMaskIntoConstraints = false

	/**
	Sets the passed view as the contentView. Called whenever the contentView is replaced (normally this would be through an IBOutlet)
	*/
	func replaceContentView(oldContentView: NSView?, with newView: NSView) {
		// if we already have an contentView, then we remove it now
		if let oldContentView = oldContentView {
			oldContentView.removeFromSuperview()

	/**
	The disclosure title
	*/
	@IBInspectable public var contentTitle: String = "Title goes here"
	
	/**
	The expanded/collapsed state of the view
	*/
	@IBInspectable public var expanded: Bool = true
	
	/**
	The width of the disclosure button
	*/
	@IBInspectable public var buttonWidth: Int = 15
	
	/**
	The height of the disclosure button
	*/
	@IBInspectable public var buttonHeight: Int = 13
	
	/**
	The margin to the left of the disclosure button
	*/
	@IBInspectable public var buttonMargin: Int = 0
	
	/**
	The margin between the the title label and the top of the title view
	*/
	@IBInspectable public var titleTopMargin: Int = 0
	
	/**
	The margin between the the title label and the bottom of the title view
	*/
	@IBInspectable public var titleBottomMargin: Int = 0
	
	/**
	The margin between the disclosure button and the title label
	*/
	@IBInspectable public var titleLeftMargin: Int = 0
	
	/**
	The margin to the right of the title label
	*/
	@IBInspectable public var titleRightMargin: Int = 0

	/**
	The contents of the main expansion view. Must be set via an outlet or code prior to 
	adding this view to superview.
	*/
	@IBOutlet public weak var contentView: NSView! {
		didSet {
			self.replaceContentView(oldValue, with:contentView)
		}
