       @.c /= @.a
       @.a = 1
   move: (dx, dy) ->
-    return new Line(@.points[0].move(x + dx, y + dy), @.points[1].move(x + dx, y + dy))
-  moveX: (dx) ->
-    return new Line(@.points[0].move(x + dx, y), @.points[1].move(x + dx, y))
-  moveY: (dy) ->
-    return new Line(@.points[0].move(x, y + dy), @.points[1].move(x, y + dy))
+    return new Line(@.points[0].move(dx, dy), @.points[1].move(dx, dy)).setStrokeColor(@.strokeColor).setFillColor(@.fillColor)
   toString: () ->
     res = ''
     if (@.a > 0 and @.a isnt 1) then res += '+' + @.a + 'x'

    super()
    @.points = points
  equals: () -> false
  name: () -> 'Polygon'
# }}}
class Quadrilateral extends Polygon# {{{

    if (!super(B))
      return false
    return @.x == B.x && @.y == B.y
  moveTo: (x, y) ->
    return new Vector(x, y)
  move: (dx, dy) ->
    return new Vector(@.x + dx, @.y + dy)
  name: () -> 'Vector'
# }}}
class Line extends UnitaryObject# {{{
