             options.attachSecond = attachSplit[1]
 
         $target.data 'drop', options
-        $target.drop 'drop'
-
-    drop: ->
+        $target.drop 'setup'
+
+    setup: ->
         $target = $ @
         options = $target.data().drop
 
-        $target.drop 'setupDrop'
+        $target.drop 'setupElements'
         $target.drop 'setupEvents'
 
-    setupDrop: ->
-        $target = $ @
-        options = $target.data().drop
+    setupElements: ->
+        $target = $ @
+        options = $target.data('drop')
 
         options.$drop = $ '<div>'
         options.$drop.addClass drop.baseClassNames.drop

                if $(event.target).is($target[0]) or $target.find(event.target).length
                    return

                $target.drop 'closeDrop'

        $target

    toggleDrop: ->
        $target = $ @
        options = $target.data().drop

        if $target.drop 'isOpened'
            $target.drop 'closeDrop'
        else
            $target.drop 'openDrop'

        $target

    isOpened: ->
        $(@).data('drop').$drop.hasClass(drop.baseClassNames.opened)

    openDrop: ->
        $target = $ @
        options = $target.data().drop

        unless options.$drop.parent().length
            $('body').append options.$drop


        $target

    close: ->
        $target = $ @
        options = $target.data('drop')

        $target
            .addClass(drop.baseClassNames.closed)
