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

	/**
	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 ? "▼" : "►"
	}
}

	/**
	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)
		}
