   #     element.scrolls()             // -> x: NNN, y: NNN
   #     element.scrolls(x:NNN, y:NNN) // -> element self
   #     element.scrolls(x:NNN)        // -> element self
+  #     element.scrolls(x, y)         // -> element self
+  #     element.scrolls(x, null)      // -> element self
+  #     element.scrolls(null, y)      // -> element self
   #
-  # @param {Object} size x:NNN, y:NNN in case of setting
+  # @param {Object|Number} size x:NNN, y:NNN or NNN in case of setting
+  # @param {Number} y-scrolls in case of a two numbers call
   # @return {Element|Object} this element or the scrolling positions
   #
   scrolls: (scrolls) ->
     if scrolls is undefined
       return x: this._.scrollLeft, y: this._.scrollTop
     else
+      scrolls = Element_dimentions_hash(arguments)
       this._.scrollLeft = scrolls.x if 'x' of scrolls
       this._.scrollTop  = scrolls.y if 'y' of scrolls
       return this

  #     element.position()             // -> x: NNN, y:NNN
  #     element.position(x:NNN, y:NNN) // -> element self
  #     element.position(x:NNN)        // -> element self
  #
  # @param {Object} absolute position x:NNN, y:NNN
  # @return {Element|Object} this element of it's absolute position
  #
  position: (position) ->

      node = node.previousSibling

    index

# private

# converts arguments into a standard x-y hash
Element_dimentions_hash = (args) ->
  hash = {}

  if args.length is 1
    hash = args[0]
  else
    hash.x = args[0] unless args[0] is null
    hash.y = args[1] unless args[1] is null

  hash