 	the `anchorView` and the `selectionAction`
 	at least before calling `show()`.
 	*/
-	convenience init() {
+	public convenience init() {
 		self.init(frame: CGRectZero)
 	}
 	
 	/**
 	Creates a new instance of a drop down.
 	
+	:param: anchorView        The view to which the drop down will displayed onto.
+	:param: selectionAction   The action to execute when the user selects a cell.
 	:param: dataSource        The data source for the drop down.
-	:param: anchorView        The view to which the drop down will displayed onto.
-	:param: offset            The offset point relative to `anchorView`.
+	:param: topOffset         The offset point relative to `anchorView` used when drop down is displayed on above the anchor view.
+	:param: bottomOffset      The offset point relative to `anchorView` used when drop down is displayed on below the anchor view.
 	:param: cellConfiguration The format for the cells' text.
-	:param: selectionAction   The action to execute when the user selects a cell.
 	:param: cancelAction      The action to execute when the user cancels/hides the drop down.
 	
 	:returns: A new instance of a drop down customized with the above parameters.
 	*/
-	convenience init(dataSource: [String], anchorView: UIView? = nil, topOffset: CGPoint? = nil, bottomOffset: CGPoint? = nil, cellConfiguration: ConfigurationClosure? = nil, selectionAction: SelectionClosure, cancelAction: Closure? = nil) {
-		self.init()
-		
-		if let anchorView = anchorView {
-			self.anchorView = anchorView
-		}
-		
+	public convenience init(anchorView: UIView, selectionAction: SelectionClosure? = nil, dataSource: [String] = [], topOffset: CGPoint? = nil, bottomOffset: CGPoint? = nil, cellConfiguration: ConfigurationClosure? = nil, cancelAction: Closure? = nil) {
+		self.init(frame: CGRectZero)
+		
+		self.anchorView = anchorView
+		self.selectionAction = selectionAction
 		self.dataSource = dataSource
 		self.topOffset = topOffset ?? CGPointZero
 		self.bottomOffset = bottomOffset ?? CGPointZero
-		self.selectionAction = selectionAction
 		self.cellConfiguration = cellConfiguration
 		self.cancelAction = cancelAction
 	}
 	
-	override init(frame: CGRect) {
+	override public init(frame: CGRect) {
 		super.init(frame: frame)
 		setup()
 	}
 	
-	required public init(coder aDecoder: NSCoder) {
+	public required init(coder aDecoder: NSCoder) {
 		super.init(coder: aDecoder)
 		setup()
 	}

	}
	
	/// The action to execute when the user selects a cell.
	public var selectionAction: SelectionClosure!
	
	/// The action to execute when the user cancels/hides the drop down.
	public var cancelAction: Closure?

	private let tableView = UITableView()
	
	/// The view to which the drop down will displayed onto.
	public weak var anchorView: UIView? {
		didSet { setNeedsUpdateConstraints() }
	}
	
