 	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

	/**
	Disclosure button target-action callback
	*/
	func toggleExpand(sender: AnyObject?) {
		self.collapseOrExpand(!self.expanded)
	}
	
	/**
	Returns the disclosure button text based on the current expansion state
	*/
	func titleDisclosureButtonText() -> String {
		return self.expanded ? "▼" : "►"
	}
}

	Sets the collapsed/expanded state. Can be explicitly called by external sources, but is usually invoked
	by the disclosure button.
	*/
	public func collapseOrExpand(expand: Bool) {
		if expand {
			NSAnimationContext.runAnimationGroup({ context in
				context.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
