[Pkg-javascript-commits] [node-cssstyle] 14/39: progress on actually parsing the style values and rejecting invalid ones

Wolfgang Borgert debacle at moszumanska.debian.org
Sat Sep 20 20:22:34 UTC 2014


This is an automated email from the git hooks/post-receive script.

debacle pushed a commit to branch master
in repository node-cssstyle.

commit 256509eb248b6d5454bd277ad7a9247f5d0db6c0
Author: Chad Walker <chad at chad-cat-lore-eddie.com>
Date:   Tue Dec 18 23:47:56 2012 -0600

    progress on actually parsing the style values and rejecting invalid ones
    
    the background shorthand properties actually work:
    > css = require('./lib/CSSStyleDeclaration')
    { CSSStyleDeclaration: [Function: CSSStyleDeclaration] }
    > style = new css.CSSStyleDeclaration()
    { _values: {}, _importants: {}, _length: 0 }
    > style.background = 'red url(http://foo/bar)'
    'red url(http://foo/bar)'
    > style.cssText
    'background: red url(http://foo/bar);'
    > style.backgroundColor
    'red'
    > style.backgroundImage
    'url(http://foo/bar)'
    > style
    { '0': 'background',
      _values:
       { background: 'red url(http://foo/bar)',
         'background-color': 'red',
         'background-image': 'url(http://foo/bar)' },
      _importants: { background: undefined },
      _length: 1 }
---
 lib/CSSStyleDeclaration.js                         | 915 ++-------------------
 lib/parsers.js                                     | 324 ++++++++
 lib/properties/alignmentBaseline.js                |   2 +-
 lib/properties/azimuth.js                          |  57 +-
 lib/properties/background.js                       |  49 +-
 lib/properties/backgroundAttachment.js             |  12 +-
 lib/properties/backgroundClip.js                   |   2 +-
 lib/properties/backgroundColor.js                  |  25 +-
 lib/properties/backgroundImage.js                  |  21 +-
 lib/properties/backgroundOrigin.js                 |   2 +-
 lib/properties/backgroundPosition.js               |  45 +-
 lib/properties/backgroundPositionX.js              |   2 +-
 lib/properties/backgroundPositionY.js              |   2 +-
 lib/properties/backgroundRepeat.js                 |  17 +-
 lib/properties/backgroundRepeatX.js                |   2 +-
 lib/properties/backgroundRepeatY.js                |   2 +-
 lib/properties/backgroundSize.js                   |   2 +-
 lib/properties/baselineShift.js                    |   2 +-
 lib/properties/border.js                           |   2 +-
 lib/properties/borderBottom.js                     |   2 +-
 lib/properties/borderBottomColor.js                |   6 +-
 lib/properties/borderBottomLeftRadius.js           |   2 +-
 lib/properties/borderBottomRightRadius.js          |   2 +-
 lib/properties/borderBottomStyle.js                |   2 +-
 lib/properties/borderBottomWidth.js                |   2 +-
 lib/properties/borderCollapse.js                   |   2 +-
 lib/properties/borderColor.js                      |   6 +-
 lib/properties/borderImage.js                      |   2 +-
 lib/properties/borderImageOutset.js                |   2 +-
 lib/properties/borderImageRepeat.js                |   2 +-
 lib/properties/borderImageSlice.js                 |   2 +-
 lib/properties/borderImageSource.js                |   2 +-
 lib/properties/borderImageWidth.js                 |   2 +-
 lib/properties/borderLeft.js                       |   2 +-
 lib/properties/borderLeftColor.js                  |   6 +-
 lib/properties/borderLeftStyle.js                  |   2 +-
 lib/properties/borderLeftWidth.js                  |   2 +-
 lib/properties/borderRadius.js                     |   2 +-
 lib/properties/borderRight.js                      |   2 +-
 lib/properties/borderRightColor.js                 |   6 +-
 lib/properties/borderRightStyle.js                 |   2 +-
 lib/properties/borderRightWidth.js                 |   2 +-
 lib/properties/borderSpacing.js                    |   2 +-
 lib/properties/borderStyle.js                      |   2 +-
 lib/properties/borderTop.js                        |   2 +-
 lib/properties/borderTopColor.js                   |   6 +-
 lib/properties/borderTopLeftRadius.js              |   2 +-
 lib/properties/borderTopRightRadius.js             |   2 +-
 lib/properties/borderTopStyle.js                   |   2 +-
 lib/properties/borderTopWidth.js                   |   2 +-
 lib/properties/borderWidth.js                      |   2 +-
 lib/properties/bottom.js                           |   2 +-
 lib/properties/boxShadow.js                        |   2 +-
 lib/properties/boxSizing.js                        |   2 +-
 lib/properties/captionSide.js                      |   2 +-
 lib/properties/clear.js                            |   2 +-
 lib/properties/clip.js                             |   2 +-
 lib/properties/clipPath.js                         |   2 +-
 lib/properties/clipRule.js                         |   2 +-
 lib/properties/color.js                            |   6 +-
 lib/properties/colorInterpolation.js               |   2 +-
 lib/properties/colorInterpolationFilters.js        |   2 +-
 lib/properties/colorProfile.js                     |   2 +-
 lib/properties/colorRendering.js                   |   2 +-
 lib/properties/content.js                          |   2 +-
 lib/properties/counterIncrement.js                 |   2 +-
 lib/properties/counterReset.js                     |   2 +-
 lib/properties/cssFloat.js                         |   2 +-
 lib/properties/cue.js                              |   2 +-
 lib/properties/cueAfter.js                         |   2 +-
 lib/properties/cueBefore.js                        |   2 +-
 lib/properties/cursor.js                           |   2 +-
 lib/properties/direction.js                        |   2 +-
 lib/properties/display.js                          |   2 +-
 lib/properties/dominantBaseline.js                 |   2 +-
 lib/properties/elevation.js                        |   2 +-
 lib/properties/emptyCells.js                       |   2 +-
 lib/properties/enableBackground.js                 |   2 +-
 lib/properties/fill.js                             |   2 +-
 lib/properties/fillOpacity.js                      |   2 +-
 lib/properties/fillRule.js                         |   2 +-
 lib/properties/filter.js                           |   2 +-
 lib/properties/floodColor.js                       |   6 +-
 lib/properties/floodOpacity.js                     |   2 +-
 lib/properties/font.js                             |   2 +-
 lib/properties/fontFamily.js                       |   2 +-
 lib/properties/fontSize.js                         |   2 +-
 lib/properties/fontSizeAdjust.js                   |   2 +-
 lib/properties/fontStretch.js                      |   2 +-
 lib/properties/fontStyle.js                        |   2 +-
 lib/properties/fontVariant.js                      |   2 +-
 lib/properties/fontWeight.js                       |   2 +-
 lib/properties/glyphOrientationHorizontal.js       |   2 +-
 lib/properties/glyphOrientationVertical.js         |   2 +-
 lib/properties/height.js                           |   2 +-
 lib/properties/imageRendering.js                   |   2 +-
 lib/properties/kerning.js                          |   2 +-
 lib/properties/left.js                             |   2 +-
 lib/properties/letterSpacing.js                    |   2 +-
 lib/properties/lightingColor.js                    |   6 +-
 lib/properties/lineHeight.js                       |   2 +-
 lib/properties/listStyle.js                        |   2 +-
 lib/properties/listStyleImage.js                   |   2 +-
 lib/properties/listStylePosition.js                |   2 +-
 lib/properties/listStyleType.js                    |   2 +-
 lib/properties/margin.js                           |   2 +-
 lib/properties/marginBottom.js                     |   2 +-
 lib/properties/marginLeft.js                       |   2 +-
 lib/properties/marginRight.js                      |   2 +-
 lib/properties/marginTop.js                        |   2 +-
 lib/properties/marker.js                           |   2 +-
 lib/properties/markerEnd.js                        |   2 +-
 lib/properties/markerMid.js                        |   2 +-
 lib/properties/markerOffset.js                     |   2 +-
 lib/properties/markerStart.js                      |   2 +-
 lib/properties/marks.js                            |   2 +-
 lib/properties/mask.js                             |   2 +-
 lib/properties/maxHeight.js                        |   2 +-
 lib/properties/maxWidth.js                         |   2 +-
 lib/properties/minHeight.js                        |   2 +-
 lib/properties/minWidth.js                         |   2 +-
 lib/properties/opacity.js                          |   6 +-
 lib/properties/orphans.js                          |   2 +-
 lib/properties/outline.js                          |   2 +-
 lib/properties/outlineColor.js                     |   6 +-
 lib/properties/outlineOffset.js                    |   2 +-
 lib/properties/outlineStyle.js                     |   2 +-
 lib/properties/outlineWidth.js                     |   2 +-
 lib/properties/overflow.js                         |   2 +-
 lib/properties/overflowX.js                        |   2 +-
 lib/properties/overflowY.js                        |   2 +-
 lib/properties/padding.js                          |   2 +-
 lib/properties/paddingBottom.js                    |   2 +-
 lib/properties/paddingLeft.js                      |   2 +-
 lib/properties/paddingRight.js                     |   2 +-
 lib/properties/paddingTop.js                       |   2 +-
 lib/properties/page.js                             |   2 +-
 lib/properties/pageBreakAfter.js                   |   2 +-
 lib/properties/pageBreakBefore.js                  |   2 +-
 lib/properties/pageBreakInside.js                  |   2 +-
 lib/properties/pause.js                            |   2 +-
 lib/properties/pauseAfter.js                       |   2 +-
 lib/properties/pauseBefore.js                      |   2 +-
 lib/properties/pitch.js                            |   2 +-
 lib/properties/pitchRange.js                       |   2 +-
 lib/properties/playDuring.js                       |   2 +-
 lib/properties/pointerEvents.js                    |   2 +-
 lib/properties/position.js                         |   2 +-
 lib/properties/quotes.js                           |   2 +-
 lib/properties/resize.js                           |   2 +-
 lib/properties/richness.js                         |   2 +-
 lib/properties/right.js                            |   2 +-
 lib/properties/shapeRendering.js                   |   2 +-
 lib/properties/size.js                             |   2 +-
 lib/properties/speak.js                            |   2 +-
 lib/properties/speakHeader.js                      |   2 +-
 lib/properties/speakNumeral.js                     |   2 +-
 lib/properties/speakPunctuation.js                 |   2 +-
 lib/properties/speechRate.js                       |   2 +-
 lib/properties/src.js                              |   2 +-
 lib/properties/stopColor.js                        |   6 +-
 lib/properties/stopOpacity.js                      |   2 +-
 lib/properties/stress.js                           |   2 +-
 lib/properties/stroke.js                           |   2 +-
 lib/properties/strokeDasharray.js                  |   2 +-
 lib/properties/strokeDashoffset.js                 |   2 +-
 lib/properties/strokeLinecap.js                    |   2 +-
 lib/properties/strokeLinejoin.js                   |   2 +-
 lib/properties/strokeMiterlimit.js                 |   2 +-
 lib/properties/strokeOpacity.js                    |   2 +-
 lib/properties/strokeWidth.js                      |   2 +-
 lib/properties/tableLayout.js                      |   2 +-
 lib/properties/textAlign.js                        |   2 +-
 lib/properties/textAnchor.js                       |   2 +-
 lib/properties/textDecoration.js                   |   2 +-
 lib/properties/textIndent.js                       |   2 +-
 lib/properties/textLineThrough.js                  |   2 +-
 lib/properties/textLineThroughColor.js             |   6 +-
 lib/properties/textLineThroughMode.js              |   2 +-
 lib/properties/textLineThroughStyle.js             |   2 +-
 lib/properties/textLineThroughWidth.js             |   2 +-
 lib/properties/textOverflow.js                     |   2 +-
 lib/properties/textOverline.js                     |   2 +-
 lib/properties/textOverlineColor.js                |   6 +-
 lib/properties/textOverlineMode.js                 |   2 +-
 lib/properties/textOverlineStyle.js                |   2 +-
 lib/properties/textOverlineWidth.js                |   2 +-
 lib/properties/textRendering.js                    |   2 +-
 lib/properties/textShadow.js                       |   2 +-
 lib/properties/textTransform.js                    |   2 +-
 lib/properties/textUnderline.js                    |   2 +-
 lib/properties/textUnderlineColor.js               |   6 +-
 lib/properties/textUnderlineMode.js                |   2 +-
 lib/properties/textUnderlineStyle.js               |   2 +-
 lib/properties/textUnderlineWidth.js               |   2 +-
 lib/properties/top.js                              |   2 +-
 lib/properties/unicodeBidi.js                      |   2 +-
 lib/properties/unicodeRange.js                     |   2 +-
 lib/properties/vectorEffect.js                     |   2 +-
 lib/properties/verticalAlign.js                    |   2 +-
 lib/properties/visibility.js                       |   2 +-
 lib/properties/voiceFamily.js                      |   2 +-
 lib/properties/volume.js                           |   2 +-
 lib/properties/webkitAnimation.js                  |   2 +-
 lib/properties/webkitAnimationDelay.js             |   2 +-
 lib/properties/webkitAnimationDirection.js         |   2 +-
 lib/properties/webkitAnimationDuration.js          |   2 +-
 lib/properties/webkitAnimationFillMode.js          |   2 +-
 lib/properties/webkitAnimationIterationCount.js    |   2 +-
 lib/properties/webkitAnimationName.js              |   2 +-
 lib/properties/webkitAnimationPlayState.js         |   2 +-
 lib/properties/webkitAnimationTimingFunction.js    |   2 +-
 lib/properties/webkitAppearance.js                 |   2 +-
 lib/properties/webkitAspectRatio.js                |   2 +-
 lib/properties/webkitBackfaceVisibility.js         |   2 +-
 lib/properties/webkitBackgroundClip.js             |   2 +-
 lib/properties/webkitBackgroundComposite.js        |   2 +-
 lib/properties/webkitBackgroundOrigin.js           |   2 +-
 lib/properties/webkitBackgroundSize.js             |   2 +-
 lib/properties/webkitBorderAfter.js                |   2 +-
 lib/properties/webkitBorderAfterColor.js           |   6 +-
 lib/properties/webkitBorderAfterStyle.js           |   2 +-
 lib/properties/webkitBorderAfterWidth.js           |   2 +-
 lib/properties/webkitBorderBefore.js               |   2 +-
 lib/properties/webkitBorderBeforeColor.js          |   6 +-
 lib/properties/webkitBorderBeforeStyle.js          |   2 +-
 lib/properties/webkitBorderBeforeWidth.js          |   2 +-
 lib/properties/webkitBorderEnd.js                  |   2 +-
 lib/properties/webkitBorderEndColor.js             |   6 +-
 lib/properties/webkitBorderEndStyle.js             |   2 +-
 lib/properties/webkitBorderEndWidth.js             |   2 +-
 lib/properties/webkitBorderFit.js                  |   2 +-
 lib/properties/webkitBorderHorizontalSpacing.js    |   2 +-
 lib/properties/webkitBorderImage.js                |   2 +-
 lib/properties/webkitBorderRadius.js               |   2 +-
 lib/properties/webkitBorderStart.js                |   2 +-
 lib/properties/webkitBorderStartColor.js           |   6 +-
 lib/properties/webkitBorderStartStyle.js           |   2 +-
 lib/properties/webkitBorderStartWidth.js           |   2 +-
 lib/properties/webkitBorderVerticalSpacing.js      |   2 +-
 lib/properties/webkitBoxAlign.js                   |   2 +-
 lib/properties/webkitBoxDirection.js               |   2 +-
 lib/properties/webkitBoxFlex.js                    |   2 +-
 lib/properties/webkitBoxFlexGroup.js               |   2 +-
 lib/properties/webkitBoxLines.js                   |   2 +-
 lib/properties/webkitBoxOrdinalGroup.js            |   2 +-
 lib/properties/webkitBoxOrient.js                  |   2 +-
 lib/properties/webkitBoxPack.js                    |   2 +-
 lib/properties/webkitBoxReflect.js                 |   2 +-
 lib/properties/webkitBoxShadow.js                  |   2 +-
 lib/properties/webkitColorCorrection.js            |   2 +-
 lib/properties/webkitColumnAxis.js                 |   2 +-
 lib/properties/webkitColumnBreakAfter.js           |   2 +-
 lib/properties/webkitColumnBreakBefore.js          |   2 +-
 lib/properties/webkitColumnBreakInside.js          |   2 +-
 lib/properties/webkitColumnCount.js                |   2 +-
 lib/properties/webkitColumnGap.js                  |   2 +-
 lib/properties/webkitColumnRule.js                 |   2 +-
 lib/properties/webkitColumnRuleColor.js            |   6 +-
 lib/properties/webkitColumnRuleStyle.js            |   2 +-
 lib/properties/webkitColumnRuleWidth.js            |   2 +-
 lib/properties/webkitColumnSpan.js                 |   2 +-
 lib/properties/webkitColumnWidth.js                |   2 +-
 lib/properties/webkitColumns.js                    |   2 +-
 lib/properties/webkitFilter.js                     |   2 +-
 lib/properties/webkitFlexAlign.js                  |   2 +-
 lib/properties/webkitFlexDirection.js              |   2 +-
 lib/properties/webkitFlexFlow.js                   |   2 +-
 lib/properties/webkitFlexItemAlign.js              |   2 +-
 lib/properties/webkitFlexLinePack.js               |   2 +-
 lib/properties/webkitFlexOrder.js                  |   2 +-
 lib/properties/webkitFlexPack.js                   |   2 +-
 lib/properties/webkitFlexWrap.js                   |   2 +-
 lib/properties/webkitFlowFrom.js                   |   2 +-
 lib/properties/webkitFlowInto.js                   |   2 +-
 lib/properties/webkitFontFeatureSettings.js        |   2 +-
 lib/properties/webkitFontKerning.js                |   2 +-
 lib/properties/webkitFontSizeDelta.js              |   2 +-
 lib/properties/webkitFontSmoothing.js              |   2 +-
 lib/properties/webkitFontVariantLigatures.js       |   2 +-
 lib/properties/webkitHighlight.js                  |   2 +-
 lib/properties/webkitHyphenateCharacter.js         |   2 +-
 lib/properties/webkitHyphenateLimitAfter.js        |   2 +-
 lib/properties/webkitHyphenateLimitBefore.js       |   2 +-
 lib/properties/webkitHyphenateLimitLines.js        |   2 +-
 lib/properties/webkitHyphens.js                    |   2 +-
 lib/properties/webkitLineAlign.js                  |   2 +-
 lib/properties/webkitLineBoxContain.js             |   2 +-
 lib/properties/webkitLineBreak.js                  |   2 +-
 lib/properties/webkitLineClamp.js                  |   2 +-
 lib/properties/webkitLineGrid.js                   |   2 +-
 lib/properties/webkitLineSnap.js                   |   2 +-
 lib/properties/webkitLocale.js                     |   2 +-
 lib/properties/webkitLogicalHeight.js              |   2 +-
 lib/properties/webkitLogicalWidth.js               |   2 +-
 lib/properties/webkitMarginAfter.js                |   2 +-
 lib/properties/webkitMarginAfterCollapse.js        |   2 +-
 lib/properties/webkitMarginBefore.js               |   2 +-
 lib/properties/webkitMarginBeforeCollapse.js       |   2 +-
 lib/properties/webkitMarginBottomCollapse.js       |   2 +-
 lib/properties/webkitMarginCollapse.js             |   2 +-
 lib/properties/webkitMarginEnd.js                  |   2 +-
 lib/properties/webkitMarginStart.js                |   2 +-
 lib/properties/webkitMarginTopCollapse.js          |   2 +-
 lib/properties/webkitMarquee.js                    |   2 +-
 lib/properties/webkitMarqueeDirection.js           |   2 +-
 lib/properties/webkitMarqueeIncrement.js           |   2 +-
 lib/properties/webkitMarqueeRepetition.js          |   2 +-
 lib/properties/webkitMarqueeSpeed.js               |   2 +-
 lib/properties/webkitMarqueeStyle.js               |   2 +-
 lib/properties/webkitMask.js                       |   2 +-
 lib/properties/webkitMaskAttachment.js             |   2 +-
 lib/properties/webkitMaskBoxImage.js               |   2 +-
 lib/properties/webkitMaskBoxImageOutset.js         |   2 +-
 lib/properties/webkitMaskBoxImageRepeat.js         |   2 +-
 lib/properties/webkitMaskBoxImageSlice.js          |   2 +-
 lib/properties/webkitMaskBoxImageSource.js         |   2 +-
 lib/properties/webkitMaskBoxImageWidth.js          |   2 +-
 lib/properties/webkitMaskClip.js                   |   2 +-
 lib/properties/webkitMaskComposite.js              |   2 +-
 lib/properties/webkitMaskImage.js                  |   2 +-
 lib/properties/webkitMaskOrigin.js                 |   2 +-
 lib/properties/webkitMaskPosition.js               |   2 +-
 lib/properties/webkitMaskPositionX.js              |   2 +-
 lib/properties/webkitMaskPositionY.js              |   2 +-
 lib/properties/webkitMaskRepeat.js                 |   2 +-
 lib/properties/webkitMaskRepeatX.js                |   2 +-
 lib/properties/webkitMaskRepeatY.js                |   2 +-
 lib/properties/webkitMaskSize.js                   |   2 +-
 .../webkitMatchNearestMailBlockquoteColor.js       |   6 +-
 lib/properties/webkitMaxLogicalHeight.js           |   2 +-
 lib/properties/webkitMaxLogicalWidth.js            |   2 +-
 lib/properties/webkitMinLogicalHeight.js           |   2 +-
 lib/properties/webkitMinLogicalWidth.js            |   2 +-
 lib/properties/webkitNbspMode.js                   |   2 +-
 lib/properties/webkitOverflowScrolling.js          |   2 +-
 lib/properties/webkitPaddingAfter.js               |   2 +-
 lib/properties/webkitPaddingBefore.js              |   2 +-
 lib/properties/webkitPaddingEnd.js                 |   2 +-
 lib/properties/webkitPaddingStart.js               |   2 +-
 lib/properties/webkitPerspective.js                |   2 +-
 lib/properties/webkitPerspectiveOrigin.js          |   2 +-
 lib/properties/webkitPerspectiveOriginX.js         |   2 +-
 lib/properties/webkitPerspectiveOriginY.js         |   2 +-
 lib/properties/webkitPrintColorAdjust.js           |   2 +-
 lib/properties/webkitRegionBreakAfter.js           |   2 +-
 lib/properties/webkitRegionBreakBefore.js          |   2 +-
 lib/properties/webkitRegionBreakInside.js          |   2 +-
 lib/properties/webkitRegionOverflow.js             |   2 +-
 lib/properties/webkitRtlOrdering.js                |   2 +-
 lib/properties/webkitSvgShadow.js                  |   2 +-
 lib/properties/webkitTapHighlightColor.js          |   6 +-
 lib/properties/webkitTextCombine.js                |   2 +-
 lib/properties/webkitTextDecorationsInEffect.js    |   2 +-
 lib/properties/webkitTextEmphasis.js               |   2 +-
 lib/properties/webkitTextEmphasisColor.js          |   6 +-
 lib/properties/webkitTextEmphasisPosition.js       |   2 +-
 lib/properties/webkitTextEmphasisStyle.js          |   2 +-
 lib/properties/webkitTextFillColor.js              |   6 +-
 lib/properties/webkitTextOrientation.js            |   2 +-
 lib/properties/webkitTextSecurity.js               |   2 +-
 lib/properties/webkitTextSizeAdjust.js             |   2 +-
 lib/properties/webkitTextStroke.js                 |   2 +-
 lib/properties/webkitTextStrokeColor.js            |   6 +-
 lib/properties/webkitTextStrokeWidth.js            |   2 +-
 lib/properties/webkitTransform.js                  |   2 +-
 lib/properties/webkitTransformOrigin.js            |   2 +-
 lib/properties/webkitTransformOriginX.js           |   2 +-
 lib/properties/webkitTransformOriginY.js           |   2 +-
 lib/properties/webkitTransformOriginZ.js           |   2 +-
 lib/properties/webkitTransformStyle.js             |   2 +-
 lib/properties/webkitTransition.js                 |   2 +-
 lib/properties/webkitTransitionDelay.js            |   2 +-
 lib/properties/webkitTransitionDuration.js         |   2 +-
 lib/properties/webkitTransitionProperty.js         |   2 +-
 lib/properties/webkitTransitionTimingFunction.js   |   2 +-
 lib/properties/webkitUserDrag.js                   |   2 +-
 lib/properties/webkitUserModify.js                 |   2 +-
 lib/properties/webkitUserSelect.js                 |   2 +-
 lib/properties/webkitWrap.js                       |   2 +-
 lib/properties/webkitWrapFlow.js                   |   2 +-
 lib/properties/webkitWrapMargin.js                 |   2 +-
 lib/properties/webkitWrapPadding.js                |   2 +-
 lib/properties/webkitWrapShapeInside.js            |   2 +-
 lib/properties/webkitWrapShapeOutside.js           |   2 +-
 lib/properties/webkitWrapThrough.js                |   2 +-
 lib/properties/webkitWritingMode.js                |   2 +-
 lib/properties/whiteSpace.js                       |   2 +-
 lib/properties/widows.js                           |   2 +-
 lib/properties/width.js                            |   2 +-
 lib/properties/wordBreak.js                        |   2 +-
 lib/properties/wordSpacing.js                      |   2 +-
 lib/properties/wordWrap.js                         |   2 +-
 lib/properties/writingMode.js                      |   2 +-
 lib/properties/zIndex.js                           |   2 +-
 lib/properties/zoom.js                             |   2 +-
 396 files changed, 1068 insertions(+), 1267 deletions(-)

diff --git a/lib/CSSStyleDeclaration.js b/lib/CSSStyleDeclaration.js
index 775589d..e7e005b 100644
--- a/lib/CSSStyleDeclaration.js
+++ b/lib/CSSStyleDeclaration.js
@@ -39,6 +39,13 @@ CSSStyleDeclaration.prototype = {
      * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty
      */
     setProperty: function (name, value, priority) {
+        if (value === undefined) {
+            return;
+        }
+        if (value === null || value === '') {
+            this.removeProperty(name);
+            return;
+        }
         if (this._values[name]) {
             // Property already exist. Overwrite it.
             var index = Array.prototype.indexOf.call(this, name);
@@ -118,855 +125,75 @@ CSSStyleDeclaration.prototype = {
             return '';
         }
         return this[index];
-    },
+    }
+};
 
-    get cssText() {
-        var properties = [];
-        var i;
-        for (i = 0; i < this._length; i++) {
-            var name = this[i];
-            var value = this.getPropertyValue(name);
-            var priority = this.getPropertyPriority(name);
-            if (priority !== '') {
-                priority = " !" + priority;
+Object.defineProperties(CSSStyleDeclaration.prototype, {
+    cssText: {
+        get: function () {
+            var properties = [];
+            var i;
+            for (i = 0; i < this._length; i++) {
+                var name = this[i];
+                var value = this.getPropertyValue(name);
+                var priority = this.getPropertyPriority(name);
+                if (priority !== '') {
+                    priority = " !" + priority;
+                }
+                properties.push([name, ': ', value, priority, ';'].join(''));
             }
-            properties.push([name, ': ', value, priority, ';'].join(''));
-        }
-        return properties.join(' ');
-    },
-    set cssText(value) {
-        var i;
-        this._values = {};
-        Array.prototype.splice.call(this, 0, this._length);
-        this._importants = {};
-        var dummyRule = CSSOM.parse('#bogus{' + value + '}').cssRules[0].style;
-        var rule_length = dummyRule.length;
-        var name;
-        for (i = 0; i < rule_length; ++i) {
-            name = dummyRule[i];
-            this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));
-        }
+            return properties.join(' ');
+        },
+        set: function (value) {
+            var i;
+            this._values = {};
+            Array.prototype.splice.call(this, 0, this._length);
+            this._importants = {};
+            var dummyRule = CSSOM.parse('#bogus{' + value + '}').cssRules[0].style;
+            var rule_length = dummyRule.length;
+            var name;
+            for (i = 0; i < rule_length; ++i) {
+                name = dummyRule[i];
+                this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));
+            }
+        },
+        enumerable: true,
+        configurable: true
     },
-
-
-    get parentRule() { return null; },
-
-    get length() { return this._length; },
-    /**
-     * This deletes indices if the new length is less then the current
-     * length. If the new length is more, it does nothing, the new indices
-     * will be undefined until set.
-     **/
-    set length(value) {
-        var i;
-        for (i = value; i < this._length; i++) {
-            delete this[i];
-        }
-        this._length = value;
+    parentRule: {  
+        get: function () { return null; },
+        enumerable: true,
+        configurable: true
     },
-
-    // properties
-    get alignmentBaseline() { return this.getPropertyValue('alignment-baseline'); },
-    set alignmentBaseline(v) { this.setProperty('alignment-baseline', v); },
-    get azimuth() { return this.getPropertyValue('azimuth'); },
-    set azimuth(v) { this.setProperty('azimuth', v); },
-    get background() { return this.getPropertyValue('background'); },
-    set background(v) { this.setProperty('background', v); },
-    get backgroundAttachment() { return this.getPropertyValue('background-attachment'); },
-    set backgroundAttachment(v) { this.setProperty('background-attachment', v); },
-    get backgroundClip() { return this.getPropertyValue('background-clip'); },
-    set backgroundClip(v) { this.setProperty('background-clip', v); },
-    get backgroundColor() { return this.getPropertyValue('background-color'); },
-    set backgroundColor(v) { this.setProperty('background-color', v); },
-    get backgroundImage() { return this.getPropertyValue('background-image'); },
-    set backgroundImage(v) { this.setProperty('background-image', v); },
-    get backgroundOrigin() { return this.getPropertyValue('background-origin'); },
-    set backgroundOrigin(v) { this.setProperty('background-origin', v); },
-    get backgroundPosition() { return this.getPropertyValue('background-position'); },
-    set backgroundPosition(v) { this.setProperty('background-position', v); },
-    get backgroundPositionX() { return this.getPropertyValue('background-position-x'); },
-    set backgroundPositionX(v) { this.setProperty('background-position-x', v); },
-    get backgroundPositionY() { return this.getPropertyValue('background-position-y'); },
-    set backgroundPositionY(v) { this.setProperty('background-position-y', v); },
-    get backgroundRepeat() { return this.getPropertyValue('background-repeat'); },
-    set backgroundRepeat(v) { this.setProperty('background-repeat', v); },
-    get backgroundRepeatX() { return this.getPropertyValue('background-repeat-x'); },
-    set backgroundRepeatX(v) { this.setProperty('background-repeat-x', v); },
-    get backgroundRepeatY() { return this.getPropertyValue('background-repeat-y'); },
-    set backgroundRepeatY(v) { this.setProperty('background-repeat-y', v); },
-    get backgroundSize() { return this.getPropertyValue('background-size'); },
-    set backgroundSize(v) { this.setProperty('background-size', v); },
-    get baselineShift() { return this.getPropertyValue('baseline-shift'); },
-    set baselineShift(v) { this.setProperty('baseline-shift', v); },
-    get border() { return this.getPropertyValue('border'); },
-    set border(v) { this.setProperty('border', v); },
-    get borderBottom() { return this.getPropertyValue('border-bottom'); },
-    set borderBottom(v) { this.setProperty('border-bottom', v); },
-    get borderBottomColor() { return this.getPropertyValue('border-bottom-color'); },
-    set borderBottomColor(v) { this.setProperty('border-bottom-color', v); },
-    get borderBottomLeftRadius() { return this.getPropertyValue('border-bottom-left-radius'); },
-    set borderBottomLeftRadius(v) { this.setProperty('border-bottom-left-radius', v); },
-    get borderBottomRightRadius() { return this.getPropertyValue('border-bottom-right-radius'); },
-    set borderBottomRightRadius(v) { this.setProperty('border-bottom-right-radius', v); },
-    get borderBottomStyle() { return this.getPropertyValue('border-bottom-style'); },
-    set borderBottomStyle(v) { this.setProperty('border-bottom-style', v); },
-    get borderBottomWidth() { return this.getPropertyValue('border-bottom-width'); },
-    set borderBottomWidth(v) { this.setProperty('border-bottom-width', v); },
-    get borderCollapse() { return this.getPropertyValue('border-collapse'); },
-    set borderCollapse(v) { this.setProperty('border-collapse', v); },
-    get borderColor() { return this.getPropertyValue('border-color'); },
-    set borderColor(v) { this.setProperty('border-color', v); },
-    get borderImage() { return this.getPropertyValue('border-image'); },
-    set borderImage(v) { this.setProperty('border-image', v); },
-    get borderImageOutset() { return this.getPropertyValue('border-image-outset'); },
-    set borderImageOutset(v) { this.setProperty('border-image-outset', v); },
-    get borderImageRepeat() { return this.getPropertyValue('border-image-repeat'); },
-    set borderImageRepeat(v) { this.setProperty('border-image-repeat', v); },
-    get borderImageSlice() { return this.getPropertyValue('border-image-slice'); },
-    set borderImageSlice(v) { this.setProperty('border-image-slice', v); },
-    get borderImageSource() { return this.getPropertyValue('border-image-source'); },
-    set borderImageSource(v) { this.setProperty('border-image-source', v); },
-    get borderImageWidth() { return this.getPropertyValue('border-image-width'); },
-    set borderImageWidth(v) { this.setProperty('border-image-width', v); },
-    get borderLeft() { return this.getPropertyValue('border-left'); },
-    set borderLeft(v) { this.setProperty('border-left', v); },
-    get borderLeftColor() { return this.getPropertyValue('border-left-color'); },
-    set borderLeftColor(v) { this.setProperty('border-left-color', v); },
-    get borderLeftStyle() { return this.getPropertyValue('border-left-style'); },
-    set borderLeftStyle(v) { this.setProperty('border-left-style', v); },
-    get borderLeftWidth() { return this.getPropertyValue('border-left-width'); },
-    set borderLeftWidth(v) { this.setProperty('border-left-width', v); },
-    get borderRadius() { return this.getPropertyValue('border-radius'); },
-    set borderRadius(v) { this.setProperty('border-radius', v); },
-    get borderRight() { return this.getPropertyValue('border-right'); },
-    set borderRight(v) { this.setProperty('border-right', v); },
-    get borderRightColor() { return this.getPropertyValue('border-right-color'); },
-    set borderRightColor(v) { this.setProperty('border-right-color', v); },
-    get borderRightStyle() { return this.getPropertyValue('border-right-style'); },
-    set borderRightStyle(v) { this.setProperty('border-right-style', v); },
-    get borderRightWidth() { return this.getPropertyValue('border-right-width'); },
-    set borderRightWidth(v) { this.setProperty('border-right-width', v); },
-    get borderSpacing() { return this.getPropertyValue('border-spacing'); },
-    set borderSpacing(v) { this.setProperty('border-spacing', v); },
-    get borderStyle() { return this.getPropertyValue('border-style'); },
-    set borderStyle(v) { this.setProperty('border-style', v); },
-    get borderTop() { return this.getPropertyValue('border-top'); },
-    set borderTop(v) { this.setProperty('border-top', v); },
-    get borderTopColor() { return this.getPropertyValue('border-top-color'); },
-    set borderTopColor(v) { this.setProperty('border-top-color', v); },
-    get borderTopLeftRadius() { return this.getPropertyValue('border-top-left-radius'); },
-    set borderTopLeftRadius(v) { this.setProperty('border-top-left-radius', v); },
-    get borderTopRightRadius() { return this.getPropertyValue('border-top-right-radius'); },
-    set borderTopRightRadius(v) { this.setProperty('border-top-right-radius', v); },
-    get borderTopStyle() { return this.getPropertyValue('border-top-style'); },
-    set borderTopStyle(v) { this.setProperty('border-top-style', v); },
-    get borderTopWidth() { return this.getPropertyValue('border-top-width'); },
-    set borderTopWidth(v) { this.setProperty('border-top-width', v); },
-    get borderWidth() { return this.getPropertyValue('border-width'); },
-    set borderWidth(v) { this.setProperty('border-width', v); },
-    get bottom() { return this.getPropertyValue('bottom'); },
-    set bottom(v) { this.setProperty('bottom', v); },
-    get boxShadow() { return this.getPropertyValue('box-shadow'); },
-    set boxShadow(v) { this.setProperty('box-shadow', v); },
-    get boxSizing() { return this.getPropertyValue('box-sizing'); },
-    set boxSizing(v) { this.setProperty('box-sizing', v); },
-    get captionSide() { return this.getPropertyValue('caption-side'); },
-    set captionSide(v) { this.setProperty('caption-side', v); },
-    get clear() { return this.getPropertyValue('clear'); },
-    set clear(v) { this.setProperty('clear', v); },
-    get clip() { return this.getPropertyValue('clip'); },
-    set clip(v) { this.setProperty('clip', v); },
-    get clipPath() { return this.getPropertyValue('clip-path'); },
-    set clipPath(v) { this.setProperty('clip-path', v); },
-    get clipRule() { return this.getPropertyValue('clip-rule'); },
-    set clipRule(v) { this.setProperty('clip-rule', v); },
-    get color() { return this.getPropertyValue('color'); },
-    set color(v) { this.setProperty('color', v); },
-    get colorInterpolation() { return this.getPropertyValue('color-interpolation'); },
-    set colorInterpolation(v) { this.setProperty('color-interpolation', v); },
-    get colorInterpolationFilters() { return this.getPropertyValue('color-interpolation-filters'); },
-    set colorInterpolationFilters(v) { this.setProperty('color-interpolation-filters', v); },
-    get colorProfile() { return this.getPropertyValue('color-profile'); },
-    set colorProfile(v) { this.setProperty('color-profile', v); },
-    get colorRendering() { return this.getPropertyValue('color-rendering'); },
-    set colorRendering(v) { this.setProperty('color-rendering', v); },
-    get content() { return this.getPropertyValue('content'); },
-    set content(v) { this.setProperty('content', v); },
-    get counterIncrement() { return this.getPropertyValue('counter-increment'); },
-    set counterIncrement(v) { this.setProperty('counter-increment', v); },
-    get counterReset() { return this.getPropertyValue('counter-reset'); },
-    set counterReset(v) { this.setProperty('counter-reset', v); },
-    get cssFloat() { return this.getPropertyValue('float'); },
-    set cssFloat(v) { this.setProperty('float', v); },
-    get cue() { return this.getPropertyValue('cue'); },
-    set cue(v) { this.setProperty('cue', v); },
-    get cueAfter() { return this.getPropertyValue('cue-after'); },
-    set cueAfter(v) { this.setProperty('cue-after', v); },
-    get cueBefore() { return this.getPropertyValue('cue-before'); },
-    set cueBefore(v) { this.setProperty('cue-before', v); },
-    get cursor() { return this.getPropertyValue('cursor'); },
-    set cursor(v) { this.setProperty('cursor', v); },
-    get direction() { return this.getPropertyValue('direction'); },
-    set direction(v) { this.setProperty('direction', v); },
-    get display() { return this.getPropertyValue('display'); },
-    set display(v) { this.setProperty('display', v); },
-    get dominantBaseline() { return this.getPropertyValue('dominant-baseline'); },
-    set dominantBaseline(v) { this.setProperty('dominant-baseline', v); },
-    get elevation() { return this.getPropertyValue('elevation'); },
-    set elevation(v) { this.setProperty('elevation', v); },
-    get emptyCells() { return this.getPropertyValue('empty-cells'); },
-    set emptyCells(v) { this.setProperty('empty-cells', v); },
-    get enableBackground() { return this.getPropertyValue('enable-background'); },
-    set enableBackground(v) { this.setProperty('enable-background', v); },
-    get fill() { return this.getPropertyValue('fill'); },
-    set fill(v) { this.setProperty('fill', v); },
-    get fillOpacity() { return this.getPropertyValue('fill-opacity'); },
-    set fillOpacity(v) { this.setProperty('fill-opacity', v); },
-    get fillRule() { return this.getPropertyValue('fill-rule'); },
-    set fillRule(v) { this.setProperty('fill-rule', v); },
-    get filter() { return this.getPropertyValue('filter'); },
-    set filter(v) { this.setProperty('filter', v); },
-    get floodColor() { return this.getPropertyValue('flood-color'); },
-    set floodColor(v) { this.setProperty('flood-color', v); },
-    get floodOpacity() { return this.getPropertyValue('flood-opacity'); },
-    set floodOpacity(v) { this.setProperty('flood-opacity', v); },
-    get font() { return this.getPropertyValue('font'); },
-    set font(v) { this.setProperty('font', v); },
-    get fontFamily() { return this.getPropertyValue('font-family'); },
-    set fontFamily(v) { this.setProperty('font-family', v); },
-    get fontSize() { return this.getPropertyValue('font-size'); },
-    set fontSize(v) { this.setProperty('font-size', v); },
-    get fontSizeAdjust() { return this.getPropertyValue('font-size-adjust'); },
-    set fontSizeAdjust(v) { this.setProperty('font-size-adjust', v); },
-    get fontStretch() { return this.getPropertyValue('font-stretch'); },
-    set fontStretch(v) { this.setProperty('font-stretch', v); },
-    get fontStyle() { return this.getPropertyValue('font-style'); },
-    set fontStyle(v) { this.setProperty('font-style', v); },
-    get fontVariant() { return this.getPropertyValue('font-variant'); },
-    set fontVariant(v) { this.setProperty('font-variant', v); },
-    get fontWeight() { return this.getPropertyValue('font-weight'); },
-    set fontWeight(v) { this.setProperty('font-weight', v); },
-    get glyphOrientationHorizontal() { return this.getPropertyValue('glyph-orientation-horizontal'); },
-    set glyphOrientationHorizontal(v) { this.setProperty('glyph-orientation-horizontal', v); },
-    get glyphOrientationVertical() { return this.getPropertyValue('glyph-orientation-vertical'); },
-    set glyphOrientationVertical(v) { this.setProperty('glyph-orientation-vertical', v); },
-    get height() { return this.getPropertyValue('height'); },
-    set height(v) { this.setProperty('height', v); },
-    get imageRendering() { return this.getPropertyValue('image-rendering'); },
-    set imageRendering(v) { this.setProperty('image-rendering', v); },
-    get kerning() { return this.getPropertyValue('kerning'); },
-    set kerning(v) { this.setProperty('kerning', v); },
-    get left() { return this.getPropertyValue('left'); },
-    set left(v) { this.setProperty('left', v); },
-    get letterSpacing() { return this.getPropertyValue('letter-spacing'); },
-    set letterSpacing(v) { this.setProperty('letter-spacing', v); },
-    get lightingColor() { return this.getPropertyValue('lighting-color'); },
-    set lightingColor(v) { this.setProperty('lighting-color', v); },
-    get lineHeight() { return this.getPropertyValue('line-height'); },
-    set lineHeight(v) { this.setProperty('line-height', v); },
-    get listStyle() { return this.getPropertyValue('list-style'); },
-    set listStyle(v) { this.setProperty('list-style', v); },
-    get listStyleImage() { return this.getPropertyValue('list-style-image'); },
-    set listStyleImage(v) { this.setProperty('list-style-image', v); },
-    get listStylePosition() { return this.getPropertyValue('list-style-position'); },
-    set listStylePosition(v) { this.setProperty('list-style-position', v); },
-    get listStyleType() { return this.getPropertyValue('list-style-type'); },
-    set listStyleType(v) { this.setProperty('list-style-type', v); },
-    get margin() { return this.getPropertyValue('margin'); },
-    set margin(v) { this.setProperty('margin', v); },
-    get marginBottom() { return this.getPropertyValue('margin-bottom'); },
-    set marginBottom(v) { this.setProperty('margin-bottom', v); },
-    get marginLeft() { return this.getPropertyValue('margin-left'); },
-    set marginLeft(v) { this.setProperty('margin-left', v); },
-    get marginRight() { return this.getPropertyValue('margin-right'); },
-    set marginRight(v) { this.setProperty('margin-right', v); },
-    get marginTop() { return this.getPropertyValue('margin-top'); },
-    set marginTop(v) { this.setProperty('margin-top', v); },
-    get marker() { return this.getPropertyValue('marker'); },
-    set marker(v) { this.setProperty('marker', v); },
-    get markerEnd() { return this.getPropertyValue('marker-end'); },
-    set markerEnd(v) { this.setProperty('marker-end', v); },
-    get markerMid() { return this.getPropertyValue('marker-mid'); },
-    set markerMid(v) { this.setProperty('marker-mid', v); },
-    get markerOffset() { return this.getPropertyValue('marker-offset'); },
-    set markerOffset(v) { this.setProperty('marker-offset', v); },
-    get markerStart() { return this.getPropertyValue('marker-start'); },
-    set markerStart(v) { this.setProperty('marker-start', v); },
-    get marks() { return this.getPropertyValue('marks'); },
-    set marks(v) { this.setProperty('marks', v); },
-    get mask() { return this.getPropertyValue('mask'); },
-    set mask(v) { this.setProperty('mask', v); },
-    get maxHeight() { return this.getPropertyValue('max-height'); },
-    set maxHeight(v) { this.setProperty('max-height', v); },
-    get maxWidth() { return this.getPropertyValue('max-width'); },
-    set maxWidth(v) { this.setProperty('max-width', v); },
-    get minHeight() { return this.getPropertyValue('min-height'); },
-    set minHeight(v) { this.setProperty('min-height', v); },
-    get minWidth() { return this.getPropertyValue('min-width'); },
-    set minWidth(v) { this.setProperty('min-width', v); },
-    get opacity() { return this.getPropertyValue('opacity'); },
-    set opacity(v) { this.setProperty('opacity', v); },
-    get orphans() { return this.getPropertyValue('orphans'); },
-    set orphans(v) { this.setProperty('orphans', v); },
-    get outline() { return this.getPropertyValue('outline'); },
-    set outline(v) { this.setProperty('outline', v); },
-    get outlineColor() { return this.getPropertyValue('outline-color'); },
-    set outlineColor(v) { this.setProperty('outline-color', v); },
-    get outlineOffset() { return this.getPropertyValue('outline-offset'); },
-    set outlineOffset(v) { this.setProperty('outline-offset', v); },
-    get outlineStyle() { return this.getPropertyValue('outline-style'); },
-    set outlineStyle(v) { this.setProperty('outline-style', v); },
-    get outlineWidth() { return this.getPropertyValue('outline-width'); },
-    set outlineWidth(v) { this.setProperty('outline-width', v); },
-    get overflow() { return this.getPropertyValue('overflow'); },
-    set overflow(v) { this.setProperty('overflow', v); },
-    get overflowX() { return this.getPropertyValue('overflow-x'); },
-    set overflowX(v) { this.setProperty('overflow-x', v); },
-    get overflowY() { return this.getPropertyValue('overflow-y'); },
-    set overflowY(v) { this.setProperty('overflow-y', v); },
-    get padding() { return this.getPropertyValue('padding'); },
-    set padding(v) { this.setProperty('padding', v); },
-    get paddingBottom() { return this.getPropertyValue('padding-bottom'); },
-    set paddingBottom(v) { this.setProperty('padding-bottom', v); },
-    get paddingLeft() { return this.getPropertyValue('padding-left'); },
-    set paddingLeft(v) { this.setProperty('padding-left', v); },
-    get paddingRight() { return this.getPropertyValue('padding-right'); },
-    set paddingRight(v) { this.setProperty('padding-right', v); },
-    get paddingTop() { return this.getPropertyValue('padding-top'); },
-    set paddingTop(v) { this.setProperty('padding-top', v); },
-    get page() { return this.getPropertyValue('page'); },
-    set page(v) { this.setProperty('page', v); },
-    get pageBreakAfter() { return this.getPropertyValue('page-break-after'); },
-    set pageBreakAfter(v) { this.setProperty('page-break-after', v); },
-    get pageBreakBefore() { return this.getPropertyValue('page-break-before'); },
-    set pageBreakBefore(v) { this.setProperty('page-break-before', v); },
-    get pageBreakInside() { return this.getPropertyValue('page-break-inside'); },
-    set pageBreakInside(v) { this.setProperty('page-break-inside', v); },
-    get pause() { return this.getPropertyValue('pause'); },
-    set pause(v) { this.setProperty('pause', v); },
-    get pauseAfter() { return this.getPropertyValue('pause-after'); },
-    set pauseAfter(v) { this.setProperty('pause-after', v); },
-    get pauseBefore() { return this.getPropertyValue('pause-before'); },
-    set pauseBefore(v) { this.setProperty('pause-before', v); },
-    get pitch() { return this.getPropertyValue('pitch'); },
-    set pitch(v) { this.setProperty('pitch', v); },
-    get pitchRange() { return this.getPropertyValue('pitch-range'); },
-    set pitchRange(v) { this.setProperty('pitch-range', v); },
-    get playDuring() { return this.getPropertyValue('play-during'); },
-    set playDuring(v) { this.setProperty('play-during', v); },
-    get pointerEvents() { return this.getPropertyValue('pointer-events'); },
-    set pointerEvents(v) { this.setProperty('pointer-events', v); },
-    get position() { return this.getPropertyValue('position'); },
-    set position(v) { this.setProperty('position', v); },
-    get quotes() { return this.getPropertyValue('quotes'); },
-    set quotes(v) { this.setProperty('quotes', v); },
-    get resize() { return this.getPropertyValue('resize'); },
-    set resize(v) { this.setProperty('resize', v); },
-    get richness() { return this.getPropertyValue('richness'); },
-    set richness(v) { this.setProperty('richness', v); },
-    get right() { return this.getPropertyValue('right'); },
-    set right(v) { this.setProperty('right', v); },
-    get shapeRendering() { return this.getPropertyValue('shape-rendering'); },
-    set shapeRendering(v) { this.setProperty('shape-rendering', v); },
-    get size() { return this.getPropertyValue('size'); },
-    set size(v) { this.setProperty('size', v); },
-    get speak() { return this.getPropertyValue('speak'); },
-    set speak(v) { this.setProperty('speak', v); },
-    get speakHeader() { return this.getPropertyValue('speak-header'); },
-    set speakHeader(v) { this.setProperty('speak-header', v); },
-    get speakNumeral() { return this.getPropertyValue('speak-numeral'); },
-    set speakNumeral(v) { this.setProperty('speak-numeral', v); },
-    get speakPunctuation() { return this.getPropertyValue('speak-punctuation'); },
-    set speakPunctuation(v) { this.setProperty('speak-punctuation', v); },
-    get speechRate() { return this.getPropertyValue('speech-rate'); },
-    set speechRate(v) { this.setProperty('speech-rate', v); },
-    get src() { return this.getPropertyValue('src'); },
-    set src(v) { this.setProperty('src', v); },
-    get stopColor() { return this.getPropertyValue('stop-color'); },
-    set stopColor(v) { this.setProperty('stop-color', v); },
-    get stopOpacity() { return this.getPropertyValue('stop-opacity'); },
-    set stopOpacity(v) { this.setProperty('stop-opacity', v); },
-    get stress() { return this.getPropertyValue('stress'); },
-    set stress(v) { this.setProperty('stress', v); },
-    get stroke() { return this.getPropertyValue('stroke'); },
-    set stroke(v) { this.setProperty('stroke', v); },
-    get strokeDasharray() { return this.getPropertyValue('stroke-dasharray'); },
-    set strokeDasharray(v) { this.setProperty('stroke-dasharray', v); },
-    get strokeDashoffset() { return this.getPropertyValue('stroke-dashoffset'); },
-    set strokeDashoffset(v) { this.setProperty('stroke-dashoffset', v); },
-    get strokeLinecap() { return this.getPropertyValue('stroke-linecap'); },
-    set strokeLinecap(v) { this.setProperty('stroke-linecap', v); },
-    get strokeLinejoin() { return this.getPropertyValue('stroke-linejoin'); },
-    set strokeLinejoin(v) { this.setProperty('stroke-linejoin', v); },
-    get strokeMiterlimit() { return this.getPropertyValue('stroke-miterlimit'); },
-    set strokeMiterlimit(v) { this.setProperty('stroke-miterlimit', v); },
-    get strokeOpacity() { return this.getPropertyValue('stroke-opacity'); },
-    set strokeOpacity(v) { this.setProperty('stroke-opacity', v); },
-    get strokeWidth() { return this.getPropertyValue('stroke-width'); },
-    set strokeWidth(v) { this.setProperty('stroke-width', v); },
-    get tableLayout() { return this.getPropertyValue('table-layout'); },
-    set tableLayout(v) { this.setProperty('table-layout', v); },
-    get textAlign() { return this.getPropertyValue('text-align'); },
-    set textAlign(v) { this.setProperty('text-align', v); },
-    get textAnchor() { return this.getPropertyValue('text-anchor'); },
-    set textAnchor(v) { this.setProperty('text-anchor', v); },
-    get textDecoration() { return this.getPropertyValue('text-decoration'); },
-    set textDecoration(v) { this.setProperty('text-decoration', v); },
-    get textIndent() { return this.getPropertyValue('text-indent'); },
-    set textIndent(v) { this.setProperty('text-indent', v); },
-    get textLineThrough() { return this.getPropertyValue('text-line-through'); },
-    set textLineThrough(v) { this.setProperty('text-line-through', v); },
-    get textLineThroughColor() { return this.getPropertyValue('text-line-through-color'); },
-    set textLineThroughColor(v) { this.setProperty('text-line-through-color', v); },
-    get textLineThroughMode() { return this.getPropertyValue('text-line-through-mode'); },
-    set textLineThroughMode(v) { this.setProperty('text-line-through-mode', v); },
-    get textLineThroughStyle() { return this.getPropertyValue('text-line-through-style'); },
-    set textLineThroughStyle(v) { this.setProperty('text-line-through-style', v); },
-    get textLineThroughWidth() { return this.getPropertyValue('text-line-through-width'); },
-    set textLineThroughWidth(v) { this.setProperty('text-line-through-width', v); },
-    get textOverflow() { return this.getPropertyValue('text-overflow'); },
-    set textOverflow(v) { this.setProperty('text-overflow', v); },
-    get textOverline() { return this.getPropertyValue('text-overline'); },
-    set textOverline(v) { this.setProperty('text-overline', v); },
-    get textOverlineColor() { return this.getPropertyValue('text-overline-color'); },
-    set textOverlineColor(v) { this.setProperty('text-overline-color', v); },
-    get textOverlineMode() { return this.getPropertyValue('text-overline-mode'); },
-    set textOverlineMode(v) { this.setProperty('text-overline-mode', v); },
-    get textOverlineStyle() { return this.getPropertyValue('text-overline-style'); },
-    set textOverlineStyle(v) { this.setProperty('text-overline-style', v); },
-    get textOverlineWidth() { return this.getPropertyValue('text-overline-width'); },
-    set textOverlineWidth(v) { this.setProperty('text-overline-width', v); },
-    get textRendering() { return this.getPropertyValue('text-rendering'); },
-    set textRendering(v) { this.setProperty('text-rendering', v); },
-    get textShadow() { return this.getPropertyValue('text-shadow'); },
-    set textShadow(v) { this.setProperty('text-shadow', v); },
-    get textTransform() { return this.getPropertyValue('text-transform'); },
-    set textTransform(v) { this.setProperty('text-transform', v); },
-    get textUnderline() { return this.getPropertyValue('text-underline'); },
-    set textUnderline(v) { this.setProperty('text-underline', v); },
-    get textUnderlineColor() { return this.getPropertyValue('text-underline-color'); },
-    set textUnderlineColor(v) { this.setProperty('text-underline-color', v); },
-    get textUnderlineMode() { return this.getPropertyValue('text-underline-mode'); },
-    set textUnderlineMode(v) { this.setProperty('text-underline-mode', v); },
-    get textUnderlineStyle() { return this.getPropertyValue('text-underline-style'); },
-    set textUnderlineStyle(v) { this.setProperty('text-underline-style', v); },
-    get textUnderlineWidth() { return this.getPropertyValue('text-underline-width'); },
-    set textUnderlineWidth(v) { this.setProperty('text-underline-width', v); },
-    get top() { return this.getPropertyValue('top'); },
-    set top(v) { this.setProperty('top', v); },
-    get unicodeBidi() { return this.getPropertyValue('unicode-bidi'); },
-    set unicodeBidi(v) { this.setProperty('unicode-bidi', v); },
-    get unicodeRange() { return this.getPropertyValue('unicode-range'); },
-    set unicodeRange(v) { this.setProperty('unicode-range', v); },
-    get vectorEffect() { return this.getPropertyValue('vector-effect'); },
-    set vectorEffect(v) { this.setProperty('vector-effect', v); },
-    get verticalAlign() { return this.getPropertyValue('vertical-align'); },
-    set verticalAlign(v) { this.setProperty('vertical-align', v); },
-    get visibility() { return this.getPropertyValue('visibility'); },
-    set visibility(v) { this.setProperty('visibility', v); },
-    get voiceFamily() { return this.getPropertyValue('voice-family'); },
-    set voiceFamily(v) { this.setProperty('voic-family', v); },
-    get volume() { return this.getPropertyValue('volume'); },
-    set volume(v) { this.setProperty('volume', v); },
-    get webkitAnimation() { return this.getPropertyValue('-webkit-animation'); },
-    set webkitAnimation(v) { this.setProperty('-webkit-animation', v); },
-    get webkitAnimationDelay() { return this.getPropertyValue('-webkit-animation-delay'); },
-    set webkitAnimationDelay(v) { this.setProperty('-webkit-animation-delay', v); },
-    get webkitAnimationDirection() { return this.getPropertyValue('-webkit-animation-direction'); },
-    set webkitAnimationDirection(v) { this.setProperty('-webkit-animation-direction', v); },
-    get webkitAnimationDuration() { return this.getPropertyValue('-webkit-animation-duration'); },
-    set webkitAnimationDuration(v) { this.setProperty('-webkit-animation-duration', v); },
-    get webkitAnimationFillMode() { return this.getPropertyValue('-webkit-animation-fill-mode'); },
-    set webkitAnimationFillMode(v) { this.setProperty('-webkit-animation-fill-mode', v); },
-    get webkitAnimationIterationCount() { return this.getPropertyValue('-webkit-animation-iteration-count'); },
-    set webkitAnimationIterationCount(v) { this.setProperty('-webkit-animation-iteration-count', v); },
-    get webkitAnimationName() { return this.getPropertyValue('-webkit-animation-name'); },
-    set webkitAnimationName(v) { this.setProperty('-webkit-animation-name', v); },
-    get webkitAnimationPlayState() { return this.getPropertyValue('-webkit-animation-play-state'); },
-    set webkitAnimationPlayState(v) { this.setProperty('-webkit-animation-play-state', v); },
-    get webkitAnimationTimingFunction() { return this.getPropertyValue('-webkit-animation-timing-function'); },
-    set webkitAnimationTimingFunction(v) { this.setProperty('-webkit-animation-timing-function', v); },
-    get webkitAppearance() { return this.getPropertyValue('-webkit-appearance'); },
-    set webkitAppearance(v) { this.setProperty('-webkit-appearance', v); },
-    get webkitAspectRatio() { return this.getPropertyValue('-webkit-aspect-ratio'); },
-    set webkitAspectRatio(v) { this.setProperty('-webkit-aspect-ratio', v); },
-    get webkitBackfaceVisibility() { return this.getPropertyValue('-webkit-backface-visibility'); },
-    set webkitBackfaceVisibility(v) { this.setProperty('-webkit-backface-visibility', v); },
-    get webkitBackgroundClip() { return this.getPropertyValue('-webkit-background-clip'); },
-    set webkitBackgroundClip(v) { this.setProperty('-webkit-background-clip', v); },
-    get webkitBackgroundComposite() { return this.getPropertyValue('-webkit-background-composite'); },
-    set webkitBackgroundComposite(v) { this.setProperty('-webkit-background-composite', v); },
-    get webkitBackgroundOrigin() { return this.getPropertyValue('-webkit-background-origin'); },
-    set webkitBackgroundOrigin(v) { this.setProperty('-webkit-background-origin', v); },
-    get webkitBackgroundSize() { return this.getPropertyValue('-webkit-background-size'); },
-    set webkitBackgroundSize(v) { this.setProperty('-webkit-background-size', v); },
-    get webkitBorderAfter() { return this.getPropertyValue('-webkit-border-after'); },
-    set webkitBorderAfter(v) { this.setProperty('-webkit-border-after', v); },
-    get webkitBorderAfterColor() { return this.getPropertyValue('-webkit-border-after-color'); },
-    set webkitBorderAfterColor(v) { this.setProperty('-webkit-border-after-color', v); },
-    get webkitBorderAfterStyle() { return this.getPropertyValue('-webkit-border-after-style'); },
-    set webkitBorderAfterStyle(v) { this.setProperty('-webkit-border-after-style', v); },
-    get webkitBorderAfterWidth() { return this.getPropertyValue('-webkit-border-after-width'); },
-    set webkitBorderAfterWidth(v) { this.setProperty('-webkit-border-after-width', v); },
-    get webkitBorderBefore() { return this.getPropertyValue('-webkit-border-before'); },
-    set webkitBorderBefore(v) { this.setProperty('-webkit-border-before', v); },
-    get webkitBorderBeforeColor() { return this.getPropertyValue('-webkit-border-before-color'); },
-    set webkitBorderBeforeColor(v) { this.setProperty('-webkit-border-before-color', v); },
-    get webkitBorderBeforeStyle() { return this.getPropertyValue('-webkit-border-before-style'); },
-    set webkitBorderBeforeStyle(v) { this.setProperty('-webkit-border-before-style', v); },
-    get webkitBorderBeforeWidth() { return this.getPropertyValue('-webkit-border-before-width'); },
-    set webkitBorderBeforeWidth(v) { this.setProperty('-webkit-border-before-width', v); },
-    get webkitBorderEnd() { return this.getPropertyValue('-webkit-border-end'); },
-    set webkitBorderEnd(v) { this.setProperty('-webkit-border-end', v); },
-    get webkitBorderEndColor() { return this.getPropertyValue('-webkit-border-end-color'); },
-    set webkitBorderEndColor(v) { this.setProperty('-webkit-border-end-color', v); },
-    get webkitBorderEndStyle() { return this.getPropertyValue('-webkit-border-end-style'); },
-    set webkitBorderEndStyle(v) { this.setProperty('-webkit-border-end-style', v); },
-    get webkitBorderEndWidth() { return this.getPropertyValue('-webkit-border-end-width'); },
-    set webkitBorderEndWidth(v) { this.setProperty('-webkit-border-end-width', v); },
-    get webkitBorderFit() { return this.getPropertyValue('-webkit-border-fit'); },
-    set webkitBorderFit(v) { this.setProperty('-webkit-border-fit', v); },
-    get webkitBorderHorizontalSpacing() { return this.getPropertyValue('-webkit-border-horizontal-spacing'); },
-    set webkitBorderHorizontalSpacing(v) { this.setProperty('-webkit-border-horizontal-spacing', v); },
-    get webkitBorderImage() { return this.getPropertyValue('-webkit-border-image'); },
-    set webkitBorderImage(v) { this.setProperty('-webkit-border-image', v); },
-    get webkitBorderRadius() { return this.getPropertyValue('-webkit-border-radius'); },
-    set webkitBorderRadius(v) { this.setProperty('-webkit-border-radius', v); },
-    get webkitBorderStart() { return this.getPropertyValue('-webkit-border-start'); },
-    set webkitBorderStart(v) { this.setProperty('-webkit-border-start', v); },
-    get webkitBorderStartColor() { return this.getPropertyValue('-webkit-border-start-color'); },
-    set webkitBorderStartColor(v) { this.setProperty('-webkit-border-start-color', v); },
-    get webkitBorderStartStyle() { return this.getPropertyValue('-webkit-border-start-style'); },
-    set webkitBorderStartStyle(v) { this.setProperty('-webkit-border-start-style', v); },
-    get webkitBorderStartWidth() { return this.getPropertyValue('-webkit-border-start-width'); },
-    set webkitBorderStartWidth(v) { this.setProperty('-webkit-border-start-width', v); },
-    get webkitBorderVerticalSpacing() { return this.getPropertyValue('-webkit-border-vertical-spacing'); },
-    set webkitBorderVerticalSpacing(v) { this.setProperty('-webkit-border-vertical-spacing', v); },
-    get webkitBoxAlign() { return this.getPropertyValue('-webkit-box-align'); },
-    set webkitBoxAlign(v) { this.setProperty('-webkit-box-align', v); },
-    get webkitBoxDirection() { return this.getPropertyValue('-webkit-box-direction'); },
-    set webkitBoxDirection(v) { this.setProperty('-webkit-box-direction', v); },
-    get webkitBoxFlex() { return this.getPropertyValue('-webkit-box-flex'); },
-    set webkitBoxFlex(v) { this.setProperty('-webkit-box-flex', v); },
-    get webkitBoxFlexGroup() { return this.getPropertyValue('-webkit-box-flex-group'); },
-    set webkitBoxFlexGroup(v) { this.setProperty('-webkit-box-flex-group', v); },
-    get webkitBoxLines() { return this.getPropertyValue('-webkit-box-lines'); },
-    set webkitBoxLines(v) { this.setProperty('-webkit-box-lines', v); },
-    get webkitBoxOrdinalGroup() { return this.getPropertyValue('-webkit-box-ordinal-group'); },
-    set webkitBoxOrdinalGroup(v) { this.setProperty('-webkit-box-ordinal-group', v); },
-    get webkitBoxOrient() { return this.getPropertyValue('-webkit-box-orient'); },
-    set webkitBoxOrient(v) { this.setProperty('-webkit-box-orient', v); },
-    get webkitBoxPack() { return this.getPropertyValue('-webkit-box-pack'); },
-    set webkitBoxPack(v) { this.setProperty('-webkit-box-pack', v); },
-    get webkitBoxReflect() { return this.getPropertyValue('-webkit-box-reflect'); },
-    set webkitBoxReflect(v) { this.setProperty('-webkit-box-reflect', v); },
-    get webkitBoxShadow() { return this.getPropertyValue('-webkit-box-shadow'); },
-    set webkitBoxShadow(v) { this.setProperty('-webkit-box-shadow', v); },
-    get webkitColorCorrection() { return this.getPropertyValue('-webkit-color-correction'); },
-    set webkitColorCorrection(v) { this.setProperty('-webkit-color-correction', v); },
-    get webkitColumnAxis() { return this.getPropertyValue('-webkit-column-axis'); },
-    set webkitColumnAxis(v) { this.setProperty('-webkit-column-axis', v); },
-    get webkitColumnBreakAfter() { return this.getPropertyValue('-webkit-column-break-after'); },
-    set webkitColumnBreakAfter(v) { this.setProperty('-webkit-column-break-after', v); },
-    get webkitColumnBreakBefore() { return this.getPropertyValue('-webkit-column-break-before'); },
-    set webkitColumnBreakBefore(v) { this.setProperty('-webkit-column-break-before', v); },
-    get webkitColumnBreakInside() { return this.getPropertyValue('-webkit-column-break-inside'); },
-    set webkitColumnBreakInside(v) { this.setProperty('-webkit-column-break-inside', v); },
-    get webkitColumnCount() { return this.getPropertyValue('-webkit-column-count'); },
-    set webkitColumnCount(v) { this.setProperty('-webkit-column-count', v); },
-    get webkitColumnGap() { return this.getPropertyValue('-webkit-column-gap'); },
-    set webkitColumnGap(v) { this.setProperty('-webkit-column-gap', v); },
-    get webkitColumnRule() { return this.getPropertyValue('-webkit-column-rule'); },
-    set webkitColumnRule(v) { this.setProperty('-webkit-column-rule', v); },
-    get webkitColumnRuleColor() { return this.getPropertyValue('-webkit-column-rule-color'); },
-    set webkitColumnRuleColor(v) { this.setProperty('-webkit-column-rule-color', v); },
-    get webkitColumnRuleStyle() { return this.getPropertyValue('-webkit-column-rule-style'); },
-    set webkitColumnRuleStyle(v) { this.setProperty('-webkit-column-rule-style', v); },
-    get webkitColumnRuleWidth() { return this.getPropertyValue('-webkit-column-rule-width'); },
-    set webkitColumnRuleWidth(v) { this.setProperty('-webkit-column-rule-width', v); },
-    get webkitColumnSpan() { return this.getPropertyValue('-webkit-column-span'); },
-    set webkitColumnSpan(v) { this.setProperty('-webkit-column-span', v); },
-    get webkitColumnWidth() { return this.getPropertyValue('-webkit-column-width'); },
-    set webkitColumnWidth(v) { this.setProperty('-webkit-column-width', v); },
-    get webkitColumns() { return this.getPropertyValue('-webkit-columns'); },
-    set webkitColumns(v) { this.setProperty('-webkit-columns', v); },
-    get webkitFilter() { return this.getPropertyValue('-webkit-filter'); },
-    set webkitFilter(v) { this.setProperty('-webkit-filter', v); },
-    get webkitFlexAlign() { return this.getPropertyValue('-webkit-flex-align'); },
-    set webkitFlexAlign(v) { this.setProperty('-webkit-flex-align', v); },
-    get webkitFlexDirection() { return this.getPropertyValue('-webkit-flex-direction'); },
-    set webkitFlexDirection(v) { this.setProperty('-webkit-flex-direction', v); },
-    get webkitFlexFlow() { return this.getPropertyValue('-webkit-flex-flow'); },
-    set webkitFlexFlow(v) { this.setProperty('-webkit-flex-flow', v); },
-    get webkitFlexItemAlign() { return this.getPropertyValue('-webkit-flex-item-align'); },
-    set webkitFlexItemAlign(v) { this.setProperty('-webkit-flex-item-align', v); },
-    get webkitFlexLinePack() { return this.getPropertyValue('-webkit-flex-line-pack'); },
-    set webkitFlexLinePack(v) { this.setProperty('-webkit-flex-line-pack', v); },
-    get webkitFlexOrder() { return this.getPropertyValue('-webkit-flex-order'); },
-    set webkitFlexOrder(v) { this.setProperty('-webkit-flex-order', v); },
-    get webkitFlexPack() { return this.getPropertyValue('-webkit-flex-pack'); },
-    set webkitFlexPack(v) { this.setProperty('-webkit-flex-pack', v); },
-    get webkitFlexWrap() { return this.getPropertyValue('-webkit-flex-wrap'); },
-    set webkitFlexWrap(v) { this.setProperty('-webkit-flex-wrap', v); },
-    get webkitFlowFrom() { return this.getPropertyValue('-webkit-flow-from'); },
-    set webkitFlowFrom(v) { this.setProperty('-webkit-flow-from', v); },
-    get webkitFlowInto() { return this.getPropertyValue('-webkit-flow-into'); },
-    set webkitFlowInto(v) { this.setProperty('-webkit-flow-into', v); },
-    get webkitFontFeatureSettings() { return this.getPropertyValue('-webkit-font-feature-settings'); },
-    set webkitFontFeatureSettings(v) { this.setProperty('-webkit-font-feature-settings', v); },
-    get webkitFontKerning() { return this.getPropertyValue('-webkit-font-kerning'); },
-    set webkitFontKerning(v) { this.setProperty('-webkit-font-kerning', v); },
-    get webkitFontSizeDelta() { return this.getPropertyValue('-webkit-font-size-delta'); },
-    set webkitFontSizeDelta(v) { this.setProperty('-webkit-font-size-delta', v); },
-    get webkitFontSmoothing() { return this.getPropertyValue('-webkit-font-smoothing'); },
-    set webkitFontSmoothing(v) { this.setProperty('-webkit-font-smoothing', v); },
-    get webkitFontVariantLigatures() { return this.getPropertyValue('-webkit-font-variant-ligatures'); },
-    set webkitFontVariantLigatures(v) { this.setProperty('-webkit-font-variant-ligatures', v); },
-    get webkitHighlight() { return this.getPropertyValue('-webkit-highlight'); },
-    set webkitHighlight(v) { this.setProperty('-webkit-highlight', v); },
-    get webkitHyphenateCharacter() { return this.getPropertyValue('-webkit-hyphenate-character'); },
-    set webkitHyphenateCharacter(v) { this.setProperty('-webkit-hyphenate-character', v); },
-    get webkitHyphenateLimitAfter() { return this.getPropertyValue('-webkit-hyphenate-limit-after'); },
-    set webkitHyphenateLimitAfter(v) { this.setProperty('-webkit-hyphenate-limit-after', v); },
-    get webkitHyphenateLimitBefore() { return this.getPropertyValue('-webkit-hyphenate-limit-before'); },
-    set webkitHyphenateLimitBefore(v) { this.setProperty('-webkit-hyphenate-limit-before', v); },
-    get webkitHyphenateLimitLines() { return this.getPropertyValue('-webkit-hyphenate-limit-lines'); },
-    set webkitHyphenateLimitLines(v) { this.setProperty('-webkit-hyphenate-limit-lines', v); },
-    get webkitHyphens() { return this.getPropertyValue('-webkit-hyphens'); },
-    set webkitHyphens(v) { this.setProperty('-webkit-hyphens', v); },
-    get webkitLineAlign() { return this.getPropertyValue('-webkit-line-align'); },
-    set webkitLineAlign(v) { this.setProperty('-webkit-line-align', v); },
-    get webkitLineBoxContain() { return this.getPropertyValue('-webkit-line-box-contain'); },
-    set webkitLineBoxContain(v) { this.setProperty('-webkit-line-box-contain', v); },
-    get webkitLineBreak() { return this.getPropertyValue('-webkit-line-break'); },
-    set webkitLineBreak(v) { this.setProperty('-webkit-line-break', v); },
-    get webkitLineClamp() { return this.getPropertyValue('-webkit-line-clamp'); },
-    set webkitLineClamp(v) { this.setProperty('-webkit-line-clamp', v); },
-    get webkitLineGrid() { return this.getPropertyValue('-webkit-line-grid'); },
-    set webkitLineGrid(v) { this.setProperty('-webkit-line-grid', v); },
-    get webkitLineSnap() { return this.getPropertyValue('-webkit-line-snap'); },
-    set webkitLineSnap(v) { this.setProperty('-webkit-line-snap', v); },
-    get webkitLocale() { return this.getPropertyValue('-webkit-locale'); },
-    set webkitLocale(v) { this.setProperty('-webkit-locale', v); },
-    get webkitLogicalHeight() { return this.getPropertyValue('-webkit-logical-height'); },
-    set webkitLogicalHeight(v) { this.setProperty('-webkit-logical-height', v); },
-    get webkitLogicalWidth() { return this.getPropertyValue('-webkit-logical-width'); },
-    set webkitLogicalWidth(v) { this.setProperty('-webkit-logical-width', v); },
-    get webkitMarginAfter() { return this.getPropertyValue('-webkit-margin-after'); },
-    set webkitMarginAfter(v) { this.setProperty('-webkit-margin-after', v); },
-    get webkitMarginAfterCollapse() { return this.getPropertyValue('-webkit-margin-after-collapse'); },
-    set webkitMarginAfterCollapse(v) { this.setProperty('-webkit-margin-after-collapse', v); },
-    get webkitMarginBefore() { return this.getPropertyValue('-webkit-margin-before'); },
-    set webkitMarginBefore(v) { this.setProperty('-webkit-margin-before', v); },
-    get webkitMarginBeforeCollapse() { return this.getPropertyValue('-webkit-margin-before-collapse'); },
-    set webkitMarginBeforeCollapse(v) { this.setProperty('-webkit-margin-before-collapse', v); },
-    get webkitMarginBottomCollapse() { return this.getPropertyValue('-webkit-margin-bottom-collapse'); },
-    set webkitMarginBottomCollapse(v) { this.setProperty('-webkit-margin-bottom-collapse', v); },
-    get webkitMarginCollapse() { return this.getPropertyValue('-webkit-margin-collapse'); },
-    set webkitMarginCollapse(v) { this.setProperty('-webkit-margin-collapse', v); },
-    get webkitMarginEnd() { return this.getPropertyValue('-webkit-margin-end'); },
-    set webkitMarginEnd(v) { this.setProperty('-webkit-margin-end', v); },
-    get webkitMarginStart() { return this.getPropertyValue('-webkit-margin-start'); },
-    set webkitMarginStart(v) { this.setProperty('-webkit-margin-start', v); },
-    get webkitMarginTopCollapse() { return this.getPropertyValue('-webkit-margin-top-collapse'); },
-    set webkitMarginTopCollapse(v) { this.setProperty('-webkit-margin-top-collapse', v); },
-    get webkitMarquee() { return this.getPropertyValue('-webkit-marquee'); },
-    set webkitMarquee(v) { this.setProperty('-webkit-marquee', v); },
-    get webkitMarqueeDirection() { return this.getPropertyValue('-webkit-marquee-direction'); },
-    set webkitMarqueeDirection(v) { this.setProperty('-webkit-marquee-direction', v); },
-    get webkitMarqueeIncrement() { return this.getPropertyValue('-webkit-marquee-increment'); },
-    set webkitMarqueeIncrement(v) { this.setProperty('-webkit-marquee-increment', v); },
-    get webkitMarqueeRepetition() { return this.getPropertyValue('-webkit-marquee-repetition'); },
-    set webkitMarqueeRepetition(v) { this.setProperty('-webkit-marquee-repetition', v); },
-    get webkitMarqueeSpeed() { return this.getPropertyValue('-webkit-marquee-speed'); },
-    set webkitMarqueeSpeed(v) { this.setProperty('-webkit-marquee-speed', v); },
-    get webkitMarqueeStyle() { return this.getPropertyValue('-webkit-marquee-style'); },
-    set webkitMarqueeStyle(v) { this.setProperty('-webkit-marquee-style', v); },
-    get webkitMask() { return this.getPropertyValue('-webkit-mask'); },
-    set webkitMask(v) { this.setProperty('-webkit-mask', v); },
-    get webkitMaskAttachment() { return this.getPropertyValue('-webkit-mask-attachment'); },
-    set webkitMaskAttachment(v) { this.setProperty('-webkit-mask-attachment', v); },
-    get webkitMaskBoxImage() { return this.getPropertyValue('-webkit-mask-box-image'); },
-    set webkitMaskBoxImage(v) { this.setProperty('-webkit-mask-box-image', v); },
-    get webkitMaskBoxImageOutset() { return this.getPropertyValue('-webkit-mask-box-image-outset'); },
-    set webkitMaskBoxImageOutset(v) { this.setProperty('-webkit-mask-box-image-outset', v); },
-    get webkitMaskBoxImageRepeat() { return this.getPropertyValue('-webkit-mask-box-image-repeat'); },
-    set webkitMaskBoxImageRepeat(v) { this.setProperty('-webkit-mask-box-image-repeat', v); },
-    get webkitMaskBoxImageSlice() { return this.getPropertyValue('-webkit-mask-box-image-slice'); },
-    set webkitMaskBoxImageSlice(v) { this.setProperty('-webkit-mask-box-image-slice', v); },
-    get webkitMaskBoxImageSource() { return this.getPropertyValue('-webkit-mask-box-image-source'); },
-    set webkitMaskBoxImageSource(v) { this.setProperty('-webkit-mask-box-image-source', v); },
-    get webkitMaskBoxImageWidth() { return this.getPropertyValue('-webkit-mask-box-image-width'); },
-    set webkitMaskBoxImageWidth(v) { this.setProperty('-webkit-mask-box-image-width', v); },
-    get webkitMaskClip() { return this.getPropertyValue('-webkit-mask-clip'); },
-    set webkitMaskClip(v) { this.setProperty('-webkit-mask-clip', v); },
-    get webkitMaskComposite() { return this.getPropertyValue('-webkit-mask-composite'); },
-    set webkitMaskComposite(v) { this.setProperty('-webkit-mask-composite', v); },
-    get webkitMaskImage() { return this.getPropertyValue('-webkit-mask-image'); },
-    set webkitMaskImage(v) { this.setProperty('-webkit-mask-image', v); },
-    get webkitMaskOrigin() { return this.getPropertyValue('-webkit-mask-origin'); },
-    set webkitMaskOrigin(v) { this.setProperty('-webkit-mask-origin', v); },
-    get webkitMaskPosition() { return this.getPropertyValue('-webkit-mask-position'); },
-    set webkitMaskPosition(v) { this.setProperty('-webkit-mask-position', v); },
-    get webkitMaskPositionX() { return this.getPropertyValue('-webkit-mask-position-x'); },
-    set webkitMaskPositionX(v) { this.setProperty('-webkit-mask-position-x', v); },
-    get webkitMaskPositionY() { return this.getPropertyValue('-webkit-mask-position-y'); },
-    set webkitMaskPositionY(v) { this.setProperty('-webkit-mask-position-y', v); },
-    get webkitMaskRepeat() { return this.getPropertyValue('-webkit-mask-repeat'); },
-    set webkitMaskRepeat(v) { this.setProperty('-webkit-mask-repeat', v); },
-    get webkitMaskRepeatX() { return this.getPropertyValue('-webkit-mask-repeat-x'); },
-    set webkitMaskRepeatX(v) { this.setProperty('-webkit-mask-repeat-x', v); },
-    get webkitMaskRepeatY() { return this.getPropertyValue('-webkit-mask-repeat-y'); },
-    set webkitMaskRepeatY(v) { this.setProperty('-webkit-mask-repeat-y', v); },
-    get webkitMaskSize() { return this.getPropertyValue('-webkit-mask-size'); },
-    set webkitMaskSize(v) { this.setProperty('-webkit-mask-size', v); },
-    get webkitMatchNearestMailBlockquoteColor() { return this.getPropertyValue('-webkit-match-nearest-mail-blockquote-color'); },
-    set webkitMatchNearestMailBlockquoteColor(v) { this.setProperty('-webkit-match-nearest-mail-blockquote-color', v); },
-    get webkitMaxLogicalHeight() { return this.getPropertyValue('-webkit-max-logical-height'); },
-    set webkitMaxLogicalHeight(v) { this.setProperty('-webkit-max-logical-height', v); },
-    get webkitMaxLogicalWidth() { return this.getPropertyValue('-webkit-max-logical-width'); },
-    set webkitMaxLogicalWidth(v) { this.setProperty('-webkit-max-logical-width', v); },
-    get webkitMinLogicalHeight() { return this.getPropertyValue('-webkit-min-logical-height'); },
-    set webkitMinLogicalHeight(v) { this.setProperty('-webkit-min-logical-height', v); },
-    get webkitMinLogicalWidth() { return this.getPropertyValue('-webkit-min-logical-width'); },
-    set webkitMinLogicalWidth(v) { this.setProperty('-webkit-min-logical-width', v); },
-    get webkitNbspMode() { return this.getPropertyValue('-webkit-nbsp-mode'); },
-    set webkitNbspMode(v) { this.setProperty('-webkit-nbsp-mode', v); },
-    get webkitOverflowScrolling() { return this.getPropertyValue('-webkit-overflow-scrolling'); },
-    set webkitOverflowScrolling(v) { this.setProperty('-webkit-overflow-scrolling', v); },
-    get webkitPaddingAfter() { return this.getPropertyValue('-webkit-padding-after'); },
-    set webkitPaddingAfter(v) { this.setProperty('-webkit-padding-after', v); },
-    get webkitPaddingBefore() { return this.getPropertyValue('-webkit-padding-before'); },
-    set webkitPaddingBefore(v) { this.setProperty('-webkit-padding-before', v); },
-    get webkitPaddingEnd() { return this.getPropertyValue('-webkit-padding-end'); },
-    set webkitPaddingEnd(v) { this.setProperty('-webkit-padding-end', v); },
-    get webkitPaddingStart() { return this.getPropertyValue('-webkit-padding-start'); },
-    set webkitPaddingStart(v) { this.setProperty('-webkit-padding-start', v); },
-    get webkitPerspective() { return this.getPropertyValue('-webkit-perspective'); },
-    set webkitPerspective(v) { this.setProperty('-webkit-perspective', v); },
-    get webkitPerspectiveOrigin() { return this.getPropertyValue('-webkit-perspective-origin'); },
-    set webkitPerspectiveOrigin(v) { this.setProperty('-webkit-perspective-origin', v); },
-    get webkitPerspectiveOriginX() { return this.getPropertyValue('-webkit-perspective-origin-x'); },
-    set webkitPerspectiveOriginX(v) { this.setProperty('-webkit-perspective-origin-x', v); },
-    get webkitPerspectiveOriginY() { return this.getPropertyValue('-webkit-perspective-origin-y'); },
-    set webkitPerspectiveOriginY(v) { this.setProperty('-webkit-perspective-origin-y', v); },
-    get webkitPrintColorAdjust() { return this.getPropertyValue('-webkit-print-color-adjust'); },
-    set webkitPrintColorAdjust(v) { this.setProperty('-webkit-print-color-adjust', v); },
-    get webkitRegionBreakAfter() { return this.getPropertyValue('-webkit-region-break-after'); },
-    set webkitRegionBreakAfter(v) { this.setProperty('-webkit-region-break-after', v); },
-    get webkitRegionBreakBefore() { return this.getPropertyValue('-webkit-region-break-before'); },
-    set webkitRegionBreakBefore(v) { this.setProperty('-webkit-region-break-before', v); },
-    get webkitRegionBreakInside() { return this.getPropertyValue('-webkit-region-break-inside'); },
-    set webkitRegionBreakInside(v) { this.setProperty('-webkit-region-break-inside', v); },
-    get webkitRegionOverflow() { return this.getPropertyValue('-webkit-region-overflow'); },
-    set webkitRegionOverflow(v) { this.setProperty('-webkit-region-overflow', v); },
-    get webkitRtlOrdering() { return this.getPropertyValue('-webkit-rtl-ordering'); },
-    set webkitRtlOrdering(v) { this.setProperty('-webkit-rtl-ordering', v); },
-    get webkitSvgShadow() { return this.getPropertyValue('-webkit-svg-shadow'); },
-    set webkitSvgShadow(v) { this.setProperty('-webkit-svg-shadow', v); },
-    get webkitTapHighlightColor() { return this.getPropertyValue('-webkit-tap-highlight-color'); },
-    set webkitTapHighlightColor(v) { this.setProperty('-webkit-tap-highlight-color', v); },
-    get webkitTextCombine() { return this.getPropertyValue('-webkit-text-combine'); },
-    set webkitTextCombine(v) { this.setProperty('-webkit-text-combine', v); },
-    get webkitTextDecorationsInEffect() { return this.getPropertyValue('-webkit-text-decorations-in-effect'); },
-    set webkitTextDecorationsInEffect(v) { this.setProperty('-webkit-text-decorations-in-effect', v); },
-    get webkitTextEmphasis() { return this.getPropertyValue('-webkit-text-emphasis'); },
-    set webkitTextEmphasis(v) { this.setProperty('-webkit-text-emphasis', v); },
-    get webkitTextEmphasisColor() { return this.getPropertyValue('-webkit-text-emphasis-color'); },
-    set webkitTextEmphasisColor(v) { this.setProperty('-webkit-text-emphasis-color', v); },
-    get webkitTextEmphasisPosition() { return this.getPropertyValue('-webkit-text-emphasis-position'); },
-    set webkitTextEmphasisPosition(v) { this.setProperty('-webkit-text-emphasis-position', v); },
-    get webkitTextEmphasisStyle() { return this.getPropertyValue('-webkit-text-emphasis-style'); },
-    set webkitTextEmphasisStyle(v) { this.setProperty('-webkit-text-emphasis-style', v); },
-    get webkitTextFillColor() { return this.getPropertyValue('-webkit-text-fill-color'); },
-    set webkitTextFillColor(v) { this.setProperty('-webkit-text-fill-color', v); },
-    get webkitTextOrientation() { return this.getPropertyValue('-webkit-text-orientation'); },
-    set webkitTextOrientation(v) { this.setProperty('-webkit-text-orientation', v); },
-    get webkitTextSecurity() { return this.getPropertyValue('-webkit-text-security'); },
-    set webkitTextSecurity(v) { this.setProperty('-webkit-text-security', v); },
-    get webkitTextSizeAdjust() { return this.getPropertyValue('-webkit-text-size-adjust'); },
-    set webkitTextSizeAdjust(v) { this.setProperty('-webkit-text-size-adjust', v); },
-    get webkitTextStroke() { return this.getPropertyValue('-webkit-text-stroke'); },
-    set webkitTextStroke(v) { this.setProperty('-webkit-text-stroke', v); },
-    get webkitTextStrokeColor() { return this.getPropertyValue('-webkit-text-stroke-color'); },
-    set webkitTextStrokeColor(v) { this.setProperty('-webkit-text-stroke-color', v); },
-    get webkitTextStrokeWidth() { return this.getPropertyValue('-webkit-text-stroke-width'); },
-    set webkitTextStrokeWidth(v) { this.setProperty('-webkit-text-stroke-width', v); },
-    get webkitTransform() { return this.getPropertyValue('-webkit-transform'); },
-    set webkitTransform(v) { this.setProperty('-webkit-transform', v); },
-    get webkitTransformOrigin() { return this.getPropertyValue('-webkit-transform-origin'); },
-    set webkitTransformOrigin(v) { this.setProperty('-webkit-transform-origin', v); },
-    get webkitTransformOriginX() { return this.getPropertyValue('-webkit-transform-origin-x'); },
-    set webkitTransformOriginX(v) { this.setProperty('-webkit-transform-origin-x', v); },
-    get webkitTransformOriginY() { return this.getPropertyValue('-webkit-transform-origin-y'); },
-    set webkitTransformOriginY(v) { this.setProperty('-webkit-transform-origin-y', v); },
-    get webkitTransformOriginZ() { return this.getPropertyValue('-webkit-transform-origin-z'); },
-    set webkitTransformOriginZ(v) { this.setProperty('-webkit-transform-origin-z', v); },
-    get webkitTransformStyle() { return this.getPropertyValue('-webkit-transform-style'); },
-    set webkitTransformStyle(v) { this.setProperty('-webkit-transform-style', v); },
-    get webkitTransition() { return this.getPropertyValue('-webkit-transition'); },
-    set webkitTransition(v) { this.setProperty('-webkit-transition', v); },
-    get webkitTransitionDelay() { return this.getPropertyValue('-webkit-transition-delay'); },
-    set webkitTransitionDelay(v) { this.setProperty('-webkit-transition-delay', v); },
-    get webkitTransitionDuration() { return this.getPropertyValue('-webkit-transition-duration'); },
-    set webkitTransitionDuration(v) { this.setProperty('-webkit-transition-duration', v); },
-    get webkitTransitionProperty() { return this.getPropertyValue('-webkit-transition-property'); },
-    set webkitTransitionProperty(v) { this.setProperty('-webkit-transition-property', v); },
-    get webkitTransitionTimingFunction() { return this.getPropertyValue('-webkit-transition-timing-function'); },
-    set webkitTransitionTimingFunction(v) { this.setProperty('-webkit-transition-timing-function', v); },
-    get webkitUserDrag() { return this.getPropertyValue('-webkit-user-drag'); },
-    set webkitUserDrag(v) { this.setProperty('-webkit-user-drag', v); },
-    get webkitUserModify() { return this.getPropertyValue('-webkit-user-modify'); },
-    set webkitUserModify(v) { this.setProperty('-webkit-user-modify', v); },
-    get webkitUserSelect() { return this.getPropertyValue('-webkit-user-select'); },
-    set webkitUserSelect(v) { this.setProperty('-webkit-user-select', v); },
-    get webkitWrap() { return this.getPropertyValue('-webkit-wrap'); },
-    set webkitWrap(v) { this.setProperty('-webkit-wrap', v); },
-    get webkitWrapFlow() { return this.getPropertyValue('-webkit-wrap-flow'); },
-    set webkitWrapFlow(v) { this.setProperty('-webkit-wrap-flow', v); },
-    get webkitWrapMargin() { return this.getPropertyValue('-webkit-wrap-margin'); },
-    set webkitWrapMargin(v) { this.setProperty('-webkit-wrap-margin', v); },
-    get webkitWrapPadding() { return this.getPropertyValue('-webkit-wrap-padding'); },
-    set webkitWrapPadding(v) { this.setProperty('-webkit-wrap-padding', v); },
-    get webkitWrapShapeInside() { return this.getPropertyValue('-webkit-wrap-shape-inside'); },
-    set webkitWrapShapeInside(v) { this.setProperty('-webkit-wrap-shape-inside', v); },
-    get webkitWrapShapeOutside() { return this.getPropertyValue('-webkit-wrap-shape-outside'); },
-    set webkitWrapShapeOutside(v) { this.setProperty('-webkit-wrap-shape-outside', v); },
-    get webkitWrapThrough() { return this.getPropertyValue('-webkit-wrap-through'); },
-    set webkitWrapThrough(v) { this.setProperty('-webkit-wrap-through', v); },
-    get webkitWritingMode() { return this.getPropertyValue('-webkit-writing-mode'); },
-    set webkitWritingMode(v) { this.setProperty('-webkit-writing-mode', v); },
-    get whiteSpace() { return this.getPropertyValue('white-space'); },
-    set whiteSpace(v) { this.setProperty('white-space', v); },
-    get widows() { return this.getPropertyValue('widows'); },
-    set widows(v) { this.setProperty('widows', v); },
-    get width() { return this.getPropertyValue('width'); },
-    set width(v) { this.setProperty('width', v); },
-    get wordBreak() { return this.getPropertyValue('word-break'); },
-    set wordBreak(v) { this.setProperty('word-break', v); },
-    get wordSpacing() { return this.getPropertyValue('word-spacing'); },
-    set wordSpacing(v) { this.setProperty('word-spacing', v); },
-    get wordWrap() { return this.getPropertyValue('word-wrap'); },
-    set wordWrap(v) { this.setProperty('word-wrap', v); },
-    get writingMode() { return this.getPropertyValue('writing-mode'); },
-    set writingMode(v) { this.setProperty('writing-mode', v); },
-    get zIndex() { return this.getPropertyValue('z-index'); },
-    set zIndex(v) { this.setProperty('z-index', v); },
-    get zoom() { return this.getPropertyValue('zoom'); },
-    set zoom(v) { this.setProperty('zoom', v); }
-
-};
+    length: {
+        get: function () { return this._length; },
+        /**
+         * This deletes indices if the new length is less then the current
+         * length. If the new length is more, it does nothing, the new indices
+         * will be undefined until set.
+         **/
+        set: function (value) {
+            var i;
+            for (i = value; i < this._length; i++) {
+                delete this[i];
+            }
+            this._length = value;
+        },
+        enumerable: true,
+        configurable: true
+    }
+});
 
 /*
-    var property_files = fs.readdirSync(__dirname + '/properties');
-    var self = this;
-    property_files.forEach(function (property) {
-        if (property.substr(-3) === '.js') {
-            property = path.basename(property, '.js');
-            Object.defineProperty(self, property, require('./properties/' + property));
-        }
-    });
-};
-*/
+ * 
+ * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Properties
+ */
+var property_files = fs.readdirSync(__dirname + '/properties');
+property_files.forEach(function (property) {
+    if (property.substr(-3) === '.js') {
+        property = path.basename(property, '.js');
+        Object.defineProperty(CSSStyleDeclaration.prototype, property, require('./properties/' + property).definition);
+    }
+});
 
 exports.CSSStyleDeclaration = CSSStyleDeclaration;
diff --git a/lib/parsers.js b/lib/parsers.js
new file mode 100644
index 0000000..97cfc94
--- /dev/null
+++ b/lib/parsers.js
@@ -0,0 +1,324 @@
+/*********************************************************************
+ * These are commonly used parsers for CSS Values they take a string *
+ * to parse and return a string after it's been converted, if needed *
+ ********************************************************************/
+'use strict';
+
+exports.TYPES = {
+    INTEGER: 1,
+    NUMBER: 2,
+    LENGTH: 3,
+    PERCENT: 4,
+    URL: 5,
+    COLOR: 6,
+    STRING: 7,
+    ANGLE: 8,
+    KEYWORD: 9
+};
+
+// rough regular expressions
+var integerRegEx = /^[\-+]?[0-9]+$/;
+var numberRegEx = /^[\-+]?[0-9]*\.[0-9]+$/;
+var lengthRegEx = /^[\-+]?[0-9]?\.?[0-9]+(in|cm|mm|pt|pc|px)$/;
+var percentRegEx = /^[\-+]?[0-9]?\.?[0-9]+%$/;
+var urlRegEx = /^url\(\s*([^\)]*)\s*\)$/;
+var stringRegEx = /^("[^"]*"|'[^']*')$/;
+var colorRegEx1 = /^#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])?$/;
+var colorRegEx2 = /^rgb\(([^\)]*)\)$/;
+var colorRegEx3 = /^rgba\(([^\)]*)\)$/;
+var angleRegEx = /^([\-+]?[0-9]?\.?[0-9]+)(deg|grad|rad)$/;
+
+// This will return one of the above types based on the passed in string
+exports.valueType = function valueType(val) {
+    if (integerRegEx.test(val)) {
+        return exports.TYPES.INTEGER;
+    }
+    if (numberRegEx.test(val)) {
+        return exports.TYPES.NUMBER;
+    }
+    if (lengthRegEx.test(val)) {
+        return exports.TYPES.LENGTH;
+    }
+    if (percentRegEx.test(val)) {
+        return exports.TYPES.PERCENT;
+    }
+    if (urlRegEx.test(val)) {
+        return exports.TYPES.URL;
+    }
+    if (stringRegEx.test(val)) {
+        return exports.TYPES.STRING;
+    }
+    if (angleRegEx.test(val)) {
+        return exports.TYPES.ANGLE;
+    }
+    if (colorRegEx1.test(val)) {
+        return exports.TYPES.COLOR;
+    }
+    var res = colorRegEx2.exec(val);
+    var parts;
+    if (res !== null) {
+        parts = res[1].split(/\s*,\s*/);
+        if (parts.length !== 3) {
+            return undefined;
+        }
+        if (parts.every(percentRegEx.test.bind()) || parts.every(integerRegEx.test.bind())) {
+            return exports.TYPES.COLOR;
+        }
+        return undefined;
+    }
+    res = colorRegEx3.exec(val);
+    if (res !== null) {
+        parts = res[1].split(/\s*,\s*/);
+        if (parts.length !== 4) {
+            return undefined;
+        }
+        if (parts.every(percentRegEx.test.bind()) || parts.every(integerRegEx.test.bind())) {
+            return exports.TYPES.COLOR;
+        }
+        return undefined;
+    }
+
+    // could still be a color, one of the standard keyword colors
+    switch (val) {
+    case 'maroon':
+    case 'red':
+    case 'orange':
+    case 'yellow':
+    case 'olive':
+    case 'purple':
+    case 'fuchsia':
+    case 'white':
+    case 'lime':
+    case 'green':
+    case 'navy':
+    case 'blue':
+    case 'aqua':
+    case 'teal':
+    case 'black':
+    case 'silver':
+    case 'gray':
+        // the following are deprecated in CSS3
+    case 'activeborder':
+    case 'activecaption':
+    case 'appworkspace':
+    case 'background':
+    case 'buttonface':
+    case 'buttonhighlight':
+    case 'buttonshadow':
+    case 'buttontext':
+    case 'captiontext':
+    case 'graytext':
+    case 'highlight':
+    case 'highlighttext':
+    case 'inactiveborder':
+    case 'inactivecaption':
+    case 'inactivecaptiontext':
+    case 'infobackground':
+    case 'infotext':
+    case 'menu':
+    case 'menutext':
+    case 'scrollbar':
+    case 'threeddarkshadow':
+    case 'threedface':
+    case 'threedhighlight':
+    case 'threedlightshadow':
+    case 'threedshadow':
+    case 'window':
+    case 'windowframe':
+    case 'windowtext':
+        return exports.TYPES.COLOR;
+    default:
+        return exports.TYPES.KEYWORD;
+    }
+};
+
+exports.parseInteger = function parseInteger(val) {
+    if (exports.valueType(val) !== exports.TYPES.INTEGER) {
+        return undefined;
+    }
+    return String(parseInt(val, 10));
+};
+
+exports.parseNumber = function parseNumber(val) {
+    if (exports.valueType(val) !== exports.TYPES.NUMBER) {
+        return undefined;
+    }
+    return String(parseFloat(val, 10));
+};
+
+exports.parseLength = function parseLength(val) {
+    if (exports.valueType(val) !== exports.TYPES.LENGTH) {
+        return undefined;
+    }
+    return val;
+};
+
+exports.parsePercent = function parsePercent(val) {
+    if (exports.valueType(val) !== exports.TYPES.PERCENT) {
+        return undefined;
+    }
+    return val;
+};
+
+exports.parseMeasurement = function parseMeasurement(val) {
+    var type = exports.valueType(val);
+    if (type !== exports.TYPES.LENGTH && type !== exports.TYPES.PERCENT) {
+        return undefined;
+    }
+    return val;
+};
+
+exports.parseUrl = function parseUrl(val) {
+    var res = urlRegEx.exec(val);
+    // does it match the regex?
+    if (!res) {
+        return undefined;
+    }
+    var str = res[1];
+    // if it starts with single or double quotes, does it end with the same?
+    if ((str[1] === '"' || str[1] === "'") && str[1] !== str[str.length - 1]) {
+        return undefined;
+    }
+    if (str[1] === '"' || str[1] === "'") {
+        str = str.substr(1, -1);
+    }
+
+    var i;
+    for (i = 0; i < str.length; i++) {
+        switch (str[i]) {
+        case '(':
+        case ')':
+        case ' ':
+        case '\t':
+        case '\n':
+        case "'":
+        case '"':
+            return undefined;
+        case '\\':
+            i++;
+            break;
+        }
+    }
+    return 'url(' + str + ')';
+};
+
+exports.parseString = function parseString(val) {
+    if (exports.valueType(val) !== exports.TYPES.STRING) {
+        return undefined;
+    }
+    var i;
+    for (i = 1; i < val.length - 1; i++) {
+        switch (val[i]) {
+        case val[0]:
+            return undefined;
+        case '\\':
+            i++;
+            while (i < val.length - 1 && /[0-9A-Fa-f]/.test(val[i])) {
+                i++;
+            }
+            break;
+        }
+    }
+    if (i >= val.length) {
+        return undefined;
+    }
+    return val;
+};
+
+exports.parseColor = function parseColor(val) {
+    var red, green, blue, alpha = 1;
+    var parts;
+    var res = colorRegEx1.exec(val);
+    // is it #aaa or #ababab
+    if (res) {
+        var hex = val.substr(1);
+        if (hex.length === 3) {
+            hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
+        }
+        red = parseInt(hex.substr(0, 2), 16);
+        green = parseInt(hex.substr(2, 2), 16);
+        blue = parseInt(hex.substr(4, 2), 16);
+        return 'rgb(' + red + ', ' + green + ', ' + blue + ')';
+    }
+
+    res = colorRegEx2.exec(val);
+    if (res) {
+        parts = res[1].split(/\s*,\s*/);
+        if (parts.length !== 3) {
+            return undefined;
+        }
+        if (parts.every(percentRegEx.test.bind(percentRegEx))) {
+            red = parseFloat(parts[0].substr(0, -1));
+            green = parseFloat(parts[1].substr(0, -1));
+            blue = parseFloat(parts[2].substr(0, -1));
+        } else if (parts.every(integerRegEx.test.bind(integerRegEx))) {
+            red = parseInt(parts[0], 10);
+            green = parseInt(parts[1], 10);
+            blue = parseInt(parts[2], 10);
+        } else {
+            return undefined;
+        }
+        red = Math.min(255, Math.max(0, red));
+        green = Math.min(255, Math.max(0, green));
+        blue = Math.min(255, Math.max(0, blue));
+        return 'rgb(' + red + ', ' + green + ', ' + blue + ')';
+    }
+
+    res = colorRegEx3.exec(val);
+    if (res) {
+        parts = res[1].split(/\s*,\s*/);
+        if (parts.length !== 4) {
+            return undefined;
+        }
+        if (parts.every(percentRegEx.test.bind(percentRegEx))) {
+            red = parseFloat(parts[0].substr(0, -1));
+            green = parseFloat(parts[1].substr(0, -1));
+            blue = parseFloat(parts[2].substr(0, -1));
+            alpha = parseFloat(parts[3]);
+        } else if (parts.every(integerRegEx.test.bind(integerRegEx))) {
+            red = parseInt(parts[0], 10);
+            green = parseInt(parts[1], 10);
+            blue = parseInt(parts[2], 10);
+            alpha = parseFloat(parts[3]);
+        } else {
+            return undefined;
+        }
+        if (isNaN(alpha)) {
+            alpha = 1;
+        }
+        red = Math.min(255, Math.max(0, red));
+        green = Math.min(255, Math.max(0, green));
+        blue = Math.min(255, Math.max(0, blue));
+        alpha = Math.min(1, Math.max(0, alpha));
+        if (alpha === 1) {
+            return 'rgb(' + red + ', ' + green + ', ' + blue + ')';
+        }
+        return 'rgba(' + red + ', ' + green + ', ' + blue + ', ' + alpha + ')';
+    }
+
+    if (exports.valueType(val) === exports.TYPES.COLOR) {
+        return val;
+    }
+    return undefined;
+};
+
+exports.parseAngle = function parseAngle(val) {
+    if (exports.valueType(val) !== exports.TYPES.ANGLE) {
+        return undefined;
+    }
+    var res = angleRegEx.exec(val);
+    var flt = parseFloat(res[1]);
+    if (res[2] === 'rad') {
+        flt *= 180 / Math.PI;
+    } else if (res[2] === 'grad') {
+        flt *= 360 / 400;
+    }
+
+    while (flt < 0) {
+        flt += 360;
+    }
+    while (flt > 360) {
+        flt -= 360;
+    }
+    return flt + 'deg';
+};
\ No newline at end of file
diff --git a/lib/properties/alignmentBaseline.js b/lib/properties/alignmentBaseline.js
index d714dca..74515e7 100644
--- a/lib/properties/alignmentBaseline.js
+++ b/lib/properties/alignmentBaseline.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('alignment-baseline', v);
     },
diff --git a/lib/properties/azimuth.js b/lib/properties/azimuth.js
index 1624050..01472d9 100644
--- a/lib/properties/azimuth.js
+++ b/lib/properties/azimuth.js
@@ -1,8 +1,61 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('azimuth', v);
+        var valueType = parsers.valueType(v);
+        if (valueType === parsers.TYPES.ANGLE) {
+            return this.setProperty('azimuth', parsers.parseAngle(v));
+        }
+        if (valueType === parsers.TYPES.KEYWORD) {
+            var keywords = v.toLowerCase().trim().split(/\s+/);
+            var hasBehind = false;
+            if (keywords.length > 2) {
+                return;
+            }
+            var behindIndex = keywords.indexOf('behind');
+            hasBehind = (behindIndex !== -1);
+
+            if (keywords.length === 2) {
+                if (!hasBehind) {
+                    return;
+                }
+                keywords.splice(behindIndex, 1);
+            }
+            if (keywords[0] === 'leftwards' || keywords[0] === 'rightwards') {
+                if (hasBehind) {
+                    return;
+                }
+                return this.setProperty('azimuth', keywords[0]);
+            }
+            if (keywords[0] === 'behind') {
+                return this.setProperty('azimuth', '180deg');
+            }
+            var deg;
+            switch (keywords[0]) {
+            case 'left-side':
+                return this.setProperty('azimuth', '270deg');
+            case 'far-left':
+                return this.setProperty('azimuth', (hasBehind ? 240 : 300) + 'deg');
+            case 'left':
+                return this.setProperty('azimuth', (hasBehind ? 220 : 320) + 'deg');
+            case 'center-left':
+                return this.setProperty('azimuth', (hasBehind ? 200 : 340) + 'deg');
+            case 'center':
+                return this.setProperty('azimuth', (hasBehind ? 180 : 0) + 'deg');
+            case 'center-right':
+                return this.setProperty('azimuth', (hasBehind ? 160 : 20) + 'deg');
+            case 'right':
+                return this.setProperty('azimuth', (hasBehind ? 140 : 40) + 'deg');
+            case 'far-right':
+                return this.setProperty('azimuth', (hasBehind ? 120 : 60) + 'deg');
+            case 'right-side':
+                return this.setProperty('azimuth', '90deg');
+            default:
+                return;
+            }
+        }
     },
     get: function () {
         return this.getPropertyValue('azimuth');
diff --git a/lib/properties/background.js b/lib/properties/background.js
index f2b9cd8..f54cff9 100644
--- a/lib/properties/background.js
+++ b/lib/properties/background.js
@@ -1,8 +1,55 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var shorthand_for = {
+    backgroundColor: 'background-color',
+    backgroundImage: 'background-image',
+    backgroundRepeat: 'background-repeat',
+    backgroundAttachment: 'background-attachment',
+    backgroundPosition: 'background-position'
+};
+
+/*
+ * this either returns false meaning that it isn't valid
+ * or returns an object where the keys are dashed short
+ * hand properties and the values are the values to set
+ * on them
+ */
+var parse = function parse(v) {
+    if (v.toLowerCase() === 'inherit') {
+        return {};
+    }
+    var parts = v.split(/\s+/);
+    var valid = false;
+    var obj = {};
+    parts.forEach(function (part) {
+        var part_valid = false;
+        Object.keys(shorthand_for).forEach(function (property) {
+            if (require('./' + property).isValid(part)) {
+                part_valid = true;
+                obj[shorthand_for[property]] = part;
+            }
+        });
+        valid = valid || part_valid;
+    });
+    if (!valid) {
+        return false;
+    }
+    return obj;
+};
+
+module.exports.definition = {
     set: function (v) {
+        var parsed = parse(v);
+        if (parsed === false) {
+            return;
+        }
         this.setProperty('background', v);
+        // these don't get set
+        Object.keys(parsed).forEach(function (property) {
+            this._values[property] = parsed[property];
+        }, this);
     },
     get: function () {
         return this.getPropertyValue('background');
diff --git a/lib/properties/backgroundAttachment.js b/lib/properties/backgroundAttachment.js
index a453393..7bc8d23 100644
--- a/lib/properties/backgroundAttachment.js
+++ b/lib/properties/backgroundAttachment.js
@@ -1,7 +1,17 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var isValid = module.exports.isValid = function isValid(v) {
+    return parsers.valueType(v) === parsers.TYPES.KEYWORD &&
+        (v.toLowerCase() === 'scroll' || v.toLowerCase() === 'fixed' || v.toLowerCase() === 'inherit');
+};
+
+module.exports.definition = {
     set: function (v) {
+        if (!isValid(v)) {
+            return;
+        }
         this.setProperty('background-attachment', v);
     },
     get: function () {
diff --git a/lib/properties/backgroundClip.js b/lib/properties/backgroundClip.js
index 59cae59..15a9d01 100644
--- a/lib/properties/backgroundClip.js
+++ b/lib/properties/backgroundClip.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-clip', v);
     },
diff --git a/lib/properties/backgroundColor.js b/lib/properties/backgroundColor.js
index 0fcb4a5..fd5a566 100644
--- a/lib/properties/backgroundColor.js
+++ b/lib/properties/backgroundColor.js
@@ -1,8 +1,29 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var parse = function parse(v) {
+    var parsed = parsers.parseColor(v);
+    if (parsed !== undefined) {
+        return parsed;
+    }
+    if (parsers.valueType(v) === parsers.TYPES.KEYWORD && (v.toLowerCase() === 'transparent' || v.toLowerCase() === 'inherit')) {
+        return v;
+    }
+    return undefined;
+};
+
+module.exports.isValid = function isValid(v) {
+    return parse(v) !== undefined;
+};
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('background-color', v);
+        var parsed = parse(v);
+        if (parsed === undefined) {
+            return;
+        }
+        this.setProperty('background-color', parsed);
     },
     get: function () {
         return this.getPropertyValue('background-color');
diff --git a/lib/properties/backgroundImage.js b/lib/properties/backgroundImage.js
index ccd117f..3f1b8fc 100644
--- a/lib/properties/backgroundImage.js
+++ b/lib/properties/backgroundImage.js
@@ -1,8 +1,25 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var parse = function parse(v) {
+    var parsed = parsers.parseUrl(v);
+    if (parsed !== undefined) {
+        return parsed;
+    }
+    if (parsers.valueType(v) === parsers.TYPES.KEYWORD && (v.toLowerCase() === 'none' || v.toLowerCase() === 'inherit')) {
+        return v;
+    }
+    return undefined;
+};
+
+module.exports.isValid = function isValid(v) {
+    return parse(v) !== undefined;
+};
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('background-image', v);
+        this.setProperty('background-image', parse(v));
     },
     get: function () {
         return this.getPropertyValue('background-image');
diff --git a/lib/properties/backgroundOrigin.js b/lib/properties/backgroundOrigin.js
index 347ebb1..cfcb178 100644
--- a/lib/properties/backgroundOrigin.js
+++ b/lib/properties/backgroundOrigin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-origin', v);
     },
diff --git a/lib/properties/backgroundPosition.js b/lib/properties/backgroundPosition.js
index ad5d761..9a2884b 100644
--- a/lib/properties/backgroundPosition.js
+++ b/lib/properties/backgroundPosition.js
@@ -1,8 +1,49 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var valid_keywords = ['top', 'center', 'bottom', 'left', 'right'];
+
+var parse = function parse(v) {
+    var parts = v.split(/\s+/);
+    if (parts.length > 2 || parts.length < 1) {
+        return undefined;
+    }
+    var types = [];
+    parts.forEach(function (part, index) {
+        types[index] = parsers.valueType(part);
+    });
+    if (parts.length === 1) {
+        if (types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) {
+            return v;
+        }
+        if (types[0] === parsers.TYPES.KEYWORD) {
+            if (valid_keywords.indexOf(v.toLowerCase()) !== -1 || v.toLowerCase() === 'inherit') {
+                return v;
+            }
+        }
+        return undefined;
+    }
+    if ((types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) &&
+            (types[1] === parsers.TYPES.LENGTH || types[1] === parsers.TYPES.PERCENT)) {
+        return v;
+    }
+    if (types[0] !== parsers.TYPES.KEYWORD || types[1] !== parsers.TYPES.KEYWORD) {
+        return undefined;
+    }
+    if (valid_keywords.indexOf(parts[0]) !== -1 && valid_keywords.indexOf(parts[1]) !== -1) {
+        return v;
+    }
+    return undefined;
+};
+
+module.exports.isValid = function isValid(v) {
+    return parse(v) !== undefined;
+};
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('background-position', v);
+        this.setProperty('background-position', parse(v));
     },
     get: function () {
         return this.getPropertyValue('background-position');
diff --git a/lib/properties/backgroundPositionX.js b/lib/properties/backgroundPositionX.js
index 478c176..bc9e463 100644
--- a/lib/properties/backgroundPositionX.js
+++ b/lib/properties/backgroundPositionX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-position-x', v);
     },
diff --git a/lib/properties/backgroundPositionY.js b/lib/properties/backgroundPositionY.js
index feff9e8..874878c 100644
--- a/lib/properties/backgroundPositionY.js
+++ b/lib/properties/backgroundPositionY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-position-y', v);
     },
diff --git a/lib/properties/backgroundRepeat.js b/lib/properties/backgroundRepeat.js
index dba5f37..34cafb5 100644
--- a/lib/properties/backgroundRepeat.js
+++ b/lib/properties/backgroundRepeat.js
@@ -1,8 +1,21 @@
 'use strict';
 
-module.exports = {
+var parsers = require('../parsers');
+
+var parse = function parse(v) {
+    if (parsers.valueType(v) === parsers.TYPES.KEYWORD && (v.toLowerCase() === 'repeat' || v.toLowerCase() === 'repeat-x' || v.toLowerCase() === 'repeat-y' || v.toLowerCase() === 'no-repeat' || v.toLowerCase() === 'inherit')) {
+        return v;
+    }
+    return undefined;
+};
+
+module.exports.isValid = function isValid(v) {
+    return parse(v) !== undefined;
+};
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('background-repeat', v);
+        this.setProperty('background-repeat', parse(v));
     },
     get: function () {
         return this.getPropertyValue('background-repeat');
diff --git a/lib/properties/backgroundRepeatX.js b/lib/properties/backgroundRepeatX.js
index 230124a..d852c20 100644
--- a/lib/properties/backgroundRepeatX.js
+++ b/lib/properties/backgroundRepeatX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-repeat-x', v);
     },
diff --git a/lib/properties/backgroundRepeatY.js b/lib/properties/backgroundRepeatY.js
index a5471fd..95fa673 100644
--- a/lib/properties/backgroundRepeatY.js
+++ b/lib/properties/backgroundRepeatY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-repeat-y', v);
     },
diff --git a/lib/properties/backgroundSize.js b/lib/properties/backgroundSize.js
index 4e2d662..6966a91 100644
--- a/lib/properties/backgroundSize.js
+++ b/lib/properties/backgroundSize.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('background-size', v);
     },
diff --git a/lib/properties/baselineShift.js b/lib/properties/baselineShift.js
index 1898648..c3d6c55 100644
--- a/lib/properties/baselineShift.js
+++ b/lib/properties/baselineShift.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('baseline-shift', v);
     },
diff --git a/lib/properties/border.js b/lib/properties/border.js
index 6680d68..9cce130 100644
--- a/lib/properties/border.js
+++ b/lib/properties/border.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border', v);
     },
diff --git a/lib/properties/borderBottom.js b/lib/properties/borderBottom.js
index 741226b..2e6bed6 100644
--- a/lib/properties/borderBottom.js
+++ b/lib/properties/borderBottom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-bottom', v);
     },
diff --git a/lib/properties/borderBottomColor.js b/lib/properties/borderBottomColor.js
index 17d64e2..4a87177 100644
--- a/lib/properties/borderBottomColor.js
+++ b/lib/properties/borderBottomColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('border-bottom-color', v);
+        this.setProperty('border-bottom-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('border-bottom-color');
diff --git a/lib/properties/borderBottomLeftRadius.js b/lib/properties/borderBottomLeftRadius.js
index 9a94458..a045995 100644
--- a/lib/properties/borderBottomLeftRadius.js
+++ b/lib/properties/borderBottomLeftRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-bottom-left-radius', v);
     },
diff --git a/lib/properties/borderBottomRightRadius.js b/lib/properties/borderBottomRightRadius.js
index 893e290..2d07a06 100644
--- a/lib/properties/borderBottomRightRadius.js
+++ b/lib/properties/borderBottomRightRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-bottom-right-radius', v);
     },
diff --git a/lib/properties/borderBottomStyle.js b/lib/properties/borderBottomStyle.js
index cb12907..9adf71c 100644
--- a/lib/properties/borderBottomStyle.js
+++ b/lib/properties/borderBottomStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-bottom-style', v);
     },
diff --git a/lib/properties/borderBottomWidth.js b/lib/properties/borderBottomWidth.js
index 49e23c0..435f71b 100644
--- a/lib/properties/borderBottomWidth.js
+++ b/lib/properties/borderBottomWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-bottom-width', v);
     },
diff --git a/lib/properties/borderCollapse.js b/lib/properties/borderCollapse.js
index b035cec..205e174 100644
--- a/lib/properties/borderCollapse.js
+++ b/lib/properties/borderCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-collapse', v);
     },
diff --git a/lib/properties/borderColor.js b/lib/properties/borderColor.js
index 49e0f20..9fff30c 100644
--- a/lib/properties/borderColor.js
+++ b/lib/properties/borderColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('border-color', v);
+        this.setProperty('border-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('border-color');
diff --git a/lib/properties/borderImage.js b/lib/properties/borderImage.js
index 142ccf5..c9c018e 100644
--- a/lib/properties/borderImage.js
+++ b/lib/properties/borderImage.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image', v);
     },
diff --git a/lib/properties/borderImageOutset.js b/lib/properties/borderImageOutset.js
index 17bc6ee..620e0ba 100644
--- a/lib/properties/borderImageOutset.js
+++ b/lib/properties/borderImageOutset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image-outset', v);
     },
diff --git a/lib/properties/borderImageRepeat.js b/lib/properties/borderImageRepeat.js
index 8c7c9d0..38986ae 100644
--- a/lib/properties/borderImageRepeat.js
+++ b/lib/properties/borderImageRepeat.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image-repeat', v);
     },
diff --git a/lib/properties/borderImageSlice.js b/lib/properties/borderImageSlice.js
index 10449b8..2e67634 100644
--- a/lib/properties/borderImageSlice.js
+++ b/lib/properties/borderImageSlice.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image-slice', v);
     },
diff --git a/lib/properties/borderImageSource.js b/lib/properties/borderImageSource.js
index e79f1ff..984b73e 100644
--- a/lib/properties/borderImageSource.js
+++ b/lib/properties/borderImageSource.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image-source', v);
     },
diff --git a/lib/properties/borderImageWidth.js b/lib/properties/borderImageWidth.js
index e2ab2e4..c430d5b 100644
--- a/lib/properties/borderImageWidth.js
+++ b/lib/properties/borderImageWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-image-width', v);
     },
diff --git a/lib/properties/borderLeft.js b/lib/properties/borderLeft.js
index d588900..de79cea 100644
--- a/lib/properties/borderLeft.js
+++ b/lib/properties/borderLeft.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-left', v);
     },
diff --git a/lib/properties/borderLeftColor.js b/lib/properties/borderLeftColor.js
index 814cfd4..0ae6014 100644
--- a/lib/properties/borderLeftColor.js
+++ b/lib/properties/borderLeftColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('border-left-color', v);
+        this.setProperty('border-left-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('border-left-color');
diff --git a/lib/properties/borderLeftStyle.js b/lib/properties/borderLeftStyle.js
index 736f2b7..a6d26b9 100644
--- a/lib/properties/borderLeftStyle.js
+++ b/lib/properties/borderLeftStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-left-style', v);
     },
diff --git a/lib/properties/borderLeftWidth.js b/lib/properties/borderLeftWidth.js
index 10a7948..910f26a 100644
--- a/lib/properties/borderLeftWidth.js
+++ b/lib/properties/borderLeftWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-left-width', v);
     },
diff --git a/lib/properties/borderRadius.js b/lib/properties/borderRadius.js
index 78dd43d..164a28f 100644
--- a/lib/properties/borderRadius.js
+++ b/lib/properties/borderRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-radius', v);
     },
diff --git a/lib/properties/borderRight.js b/lib/properties/borderRight.js
index 9e2e7b7..167d7fc 100644
--- a/lib/properties/borderRight.js
+++ b/lib/properties/borderRight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-right', v);
     },
diff --git a/lib/properties/borderRightColor.js b/lib/properties/borderRightColor.js
index 60f1705..e7bdebb 100644
--- a/lib/properties/borderRightColor.js
+++ b/lib/properties/borderRightColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('border-right-color', v);
+        this.setProperty('border-right-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('border-right-color');
diff --git a/lib/properties/borderRightStyle.js b/lib/properties/borderRightStyle.js
index 8d908bc..2c1f6dc 100644
--- a/lib/properties/borderRightStyle.js
+++ b/lib/properties/borderRightStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-right-style', v);
     },
diff --git a/lib/properties/borderRightWidth.js b/lib/properties/borderRightWidth.js
index 64be14b..f48a1d6 100644
--- a/lib/properties/borderRightWidth.js
+++ b/lib/properties/borderRightWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-right-width', v);
     },
diff --git a/lib/properties/borderSpacing.js b/lib/properties/borderSpacing.js
index e9d12db..292e690 100644
--- a/lib/properties/borderSpacing.js
+++ b/lib/properties/borderSpacing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-spacing', v);
     },
diff --git a/lib/properties/borderStyle.js b/lib/properties/borderStyle.js
index fbab688..b46ef6c 100644
--- a/lib/properties/borderStyle.js
+++ b/lib/properties/borderStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-style', v);
     },
diff --git a/lib/properties/borderTop.js b/lib/properties/borderTop.js
index 6c28c89..91fe6d6 100644
--- a/lib/properties/borderTop.js
+++ b/lib/properties/borderTop.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-top', v);
     },
diff --git a/lib/properties/borderTopColor.js b/lib/properties/borderTopColor.js
index dc86e0f..649d771 100644
--- a/lib/properties/borderTopColor.js
+++ b/lib/properties/borderTopColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('border-top-color', v);
+        this.setProperty('border-top-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('border-top-color');
diff --git a/lib/properties/borderTopLeftRadius.js b/lib/properties/borderTopLeftRadius.js
index 7e9a2ba..55e0dc0 100644
--- a/lib/properties/borderTopLeftRadius.js
+++ b/lib/properties/borderTopLeftRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-top-left-radius', v);
     },
diff --git a/lib/properties/borderTopRightRadius.js b/lib/properties/borderTopRightRadius.js
index 83a5c54..58ee985 100644
--- a/lib/properties/borderTopRightRadius.js
+++ b/lib/properties/borderTopRightRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-top-right-radius', v);
     },
diff --git a/lib/properties/borderTopStyle.js b/lib/properties/borderTopStyle.js
index 0b0473c..f02a363 100644
--- a/lib/properties/borderTopStyle.js
+++ b/lib/properties/borderTopStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-top-style', v);
     },
diff --git a/lib/properties/borderTopWidth.js b/lib/properties/borderTopWidth.js
index 66d7fda..e1dfd9e 100644
--- a/lib/properties/borderTopWidth.js
+++ b/lib/properties/borderTopWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-top-width', v);
     },
diff --git a/lib/properties/borderWidth.js b/lib/properties/borderWidth.js
index fc11195..fade76f 100644
--- a/lib/properties/borderWidth.js
+++ b/lib/properties/borderWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('border-width', v);
     },
diff --git a/lib/properties/bottom.js b/lib/properties/bottom.js
index 5146510..f1ba8a9 100644
--- a/lib/properties/bottom.js
+++ b/lib/properties/bottom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('bottom', v);
     },
diff --git a/lib/properties/boxShadow.js b/lib/properties/boxShadow.js
index 4f60633..715bcef 100644
--- a/lib/properties/boxShadow.js
+++ b/lib/properties/boxShadow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('box-shadow', v);
     },
diff --git a/lib/properties/boxSizing.js b/lib/properties/boxSizing.js
index 1c1c700..8153a2e 100644
--- a/lib/properties/boxSizing.js
+++ b/lib/properties/boxSizing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('box-sizing', v);
     },
diff --git a/lib/properties/captionSide.js b/lib/properties/captionSide.js
index f1a3a99..3e6216c 100644
--- a/lib/properties/captionSide.js
+++ b/lib/properties/captionSide.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('caption-side', v);
     },
diff --git a/lib/properties/clear.js b/lib/properties/clear.js
index 1731f51..2576cfe 100644
--- a/lib/properties/clear.js
+++ b/lib/properties/clear.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('clear', v);
     },
diff --git a/lib/properties/clip.js b/lib/properties/clip.js
index a464ff9..9a33aa4 100644
--- a/lib/properties/clip.js
+++ b/lib/properties/clip.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('clip', v);
     },
diff --git a/lib/properties/clipPath.js b/lib/properties/clipPath.js
index d83849e..3262dc5 100644
--- a/lib/properties/clipPath.js
+++ b/lib/properties/clipPath.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('clip-path', v);
     },
diff --git a/lib/properties/clipRule.js b/lib/properties/clipRule.js
index 9b0400d..32098a6 100644
--- a/lib/properties/clipRule.js
+++ b/lib/properties/clipRule.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('clip-rule', v);
     },
diff --git a/lib/properties/color.js b/lib/properties/color.js
index 339f62a..e3e4be4 100644
--- a/lib/properties/color.js
+++ b/lib/properties/color.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('color', v);
+        this.setProperty('color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('color');
diff --git a/lib/properties/colorInterpolation.js b/lib/properties/colorInterpolation.js
index 60919ce..cbd7f8f 100644
--- a/lib/properties/colorInterpolation.js
+++ b/lib/properties/colorInterpolation.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('color-interpolation', v);
     },
diff --git a/lib/properties/colorInterpolationFilters.js b/lib/properties/colorInterpolationFilters.js
index 7222ef3..fb1b62f 100644
--- a/lib/properties/colorInterpolationFilters.js
+++ b/lib/properties/colorInterpolationFilters.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('color-interpolation-filters', v);
     },
diff --git a/lib/properties/colorProfile.js b/lib/properties/colorProfile.js
index 15977a9..6b42c68 100644
--- a/lib/properties/colorProfile.js
+++ b/lib/properties/colorProfile.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('color-profile', v);
     },
diff --git a/lib/properties/colorRendering.js b/lib/properties/colorRendering.js
index d7bb355..487b83f 100644
--- a/lib/properties/colorRendering.js
+++ b/lib/properties/colorRendering.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('color-rendering', v);
     },
diff --git a/lib/properties/content.js b/lib/properties/content.js
index 52b496d..5054d92 100644
--- a/lib/properties/content.js
+++ b/lib/properties/content.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('content', v);
     },
diff --git a/lib/properties/counterIncrement.js b/lib/properties/counterIncrement.js
index 5c7899d..062c18b 100644
--- a/lib/properties/counterIncrement.js
+++ b/lib/properties/counterIncrement.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('counter-increment', v);
     },
diff --git a/lib/properties/counterReset.js b/lib/properties/counterReset.js
index 791ed5e..92c294a 100644
--- a/lib/properties/counterReset.js
+++ b/lib/properties/counterReset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('counter-reset', v);
     },
diff --git a/lib/properties/cssFloat.js b/lib/properties/cssFloat.js
index 08ef593..5dd7dfe 100644
--- a/lib/properties/cssFloat.js
+++ b/lib/properties/cssFloat.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('float', v);
     },
diff --git a/lib/properties/cue.js b/lib/properties/cue.js
index 3c96700..dcdecb9 100644
--- a/lib/properties/cue.js
+++ b/lib/properties/cue.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('cue', v);
     },
diff --git a/lib/properties/cueAfter.js b/lib/properties/cueAfter.js
index 78acf5b..37e1f3e 100644
--- a/lib/properties/cueAfter.js
+++ b/lib/properties/cueAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('cue-after', v);
     },
diff --git a/lib/properties/cueBefore.js b/lib/properties/cueBefore.js
index d1a2025..fb2db19 100644
--- a/lib/properties/cueBefore.js
+++ b/lib/properties/cueBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('cue-before', v);
     },
diff --git a/lib/properties/cursor.js b/lib/properties/cursor.js
index 56962fd..f9a4d19 100644
--- a/lib/properties/cursor.js
+++ b/lib/properties/cursor.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('cursor', v);
     },
diff --git a/lib/properties/direction.js b/lib/properties/direction.js
index b82799b..0acb9f9 100644
--- a/lib/properties/direction.js
+++ b/lib/properties/direction.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('direction', v);
     },
diff --git a/lib/properties/display.js b/lib/properties/display.js
index bcd33d2..a103b18 100644
--- a/lib/properties/display.js
+++ b/lib/properties/display.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('display', v);
     },
diff --git a/lib/properties/dominantBaseline.js b/lib/properties/dominantBaseline.js
index e10b140..064a442 100644
--- a/lib/properties/dominantBaseline.js
+++ b/lib/properties/dominantBaseline.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('dominant-baseline', v);
     },
diff --git a/lib/properties/elevation.js b/lib/properties/elevation.js
index 14a2aae..cb24aa9 100644
--- a/lib/properties/elevation.js
+++ b/lib/properties/elevation.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('elevation', v);
     },
diff --git a/lib/properties/emptyCells.js b/lib/properties/emptyCells.js
index cd375eb..9a93a39 100644
--- a/lib/properties/emptyCells.js
+++ b/lib/properties/emptyCells.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('empty-cells', v);
     },
diff --git a/lib/properties/enableBackground.js b/lib/properties/enableBackground.js
index 6a203a6..fec7532 100644
--- a/lib/properties/enableBackground.js
+++ b/lib/properties/enableBackground.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('enable-background', v);
     },
diff --git a/lib/properties/fill.js b/lib/properties/fill.js
index 23a3351..db47da3 100644
--- a/lib/properties/fill.js
+++ b/lib/properties/fill.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('fill', v);
     },
diff --git a/lib/properties/fillOpacity.js b/lib/properties/fillOpacity.js
index 02efc30..a07bb06 100644
--- a/lib/properties/fillOpacity.js
+++ b/lib/properties/fillOpacity.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('fill-opacity', v);
     },
diff --git a/lib/properties/fillRule.js b/lib/properties/fillRule.js
index 5fc9f4a..4c80f3f 100644
--- a/lib/properties/fillRule.js
+++ b/lib/properties/fillRule.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('fill-rule', v);
     },
diff --git a/lib/properties/filter.js b/lib/properties/filter.js
index 683f0a0..50211f6 100644
--- a/lib/properties/filter.js
+++ b/lib/properties/filter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('filter', v);
     },
diff --git a/lib/properties/floodColor.js b/lib/properties/floodColor.js
index 5b4372e..d8b38fc 100644
--- a/lib/properties/floodColor.js
+++ b/lib/properties/floodColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('flood-color', v);
+        this.setProperty('flood-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('flood-color');
diff --git a/lib/properties/floodOpacity.js b/lib/properties/floodOpacity.js
index 499887a..f0f252e 100644
--- a/lib/properties/floodOpacity.js
+++ b/lib/properties/floodOpacity.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('flood-opacity', v);
     },
diff --git a/lib/properties/font.js b/lib/properties/font.js
index bd3c67d..4c863a1 100644
--- a/lib/properties/font.js
+++ b/lib/properties/font.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font', v);
     },
diff --git a/lib/properties/fontFamily.js b/lib/properties/fontFamily.js
index 425a522..f424347 100644
--- a/lib/properties/fontFamily.js
+++ b/lib/properties/fontFamily.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-family', v);
     },
diff --git a/lib/properties/fontSize.js b/lib/properties/fontSize.js
index ac67bca..a70a2a2 100644
--- a/lib/properties/fontSize.js
+++ b/lib/properties/fontSize.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-size', v);
     },
diff --git a/lib/properties/fontSizeAdjust.js b/lib/properties/fontSizeAdjust.js
index 5b04a5b..620c14b 100644
--- a/lib/properties/fontSizeAdjust.js
+++ b/lib/properties/fontSizeAdjust.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-size-adjust', v);
     },
diff --git a/lib/properties/fontStretch.js b/lib/properties/fontStretch.js
index 7498fff..f96e1bf 100644
--- a/lib/properties/fontStretch.js
+++ b/lib/properties/fontStretch.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-stretch', v);
     },
diff --git a/lib/properties/fontStyle.js b/lib/properties/fontStyle.js
index f8778cd..34be589 100644
--- a/lib/properties/fontStyle.js
+++ b/lib/properties/fontStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-style', v);
     },
diff --git a/lib/properties/fontVariant.js b/lib/properties/fontVariant.js
index aafd6de..b5bbb18 100644
--- a/lib/properties/fontVariant.js
+++ b/lib/properties/fontVariant.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-variant', v);
     },
diff --git a/lib/properties/fontWeight.js b/lib/properties/fontWeight.js
index c40a02d..e4de8bc 100644
--- a/lib/properties/fontWeight.js
+++ b/lib/properties/fontWeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('font-weight', v);
     },
diff --git a/lib/properties/glyphOrientationHorizontal.js b/lib/properties/glyphOrientationHorizontal.js
index 067fa05..49042a2 100644
--- a/lib/properties/glyphOrientationHorizontal.js
+++ b/lib/properties/glyphOrientationHorizontal.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('glyph-orientation-horizontal', v);
     },
diff --git a/lib/properties/glyphOrientationVertical.js b/lib/properties/glyphOrientationVertical.js
index a8401db..1881a72 100644
--- a/lib/properties/glyphOrientationVertical.js
+++ b/lib/properties/glyphOrientationVertical.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('glyph-orientation-vertical', v);
     },
diff --git a/lib/properties/height.js b/lib/properties/height.js
index cccca13..5edc7c6 100644
--- a/lib/properties/height.js
+++ b/lib/properties/height.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('height', v);
     },
diff --git a/lib/properties/imageRendering.js b/lib/properties/imageRendering.js
index 4af2356..9329797 100644
--- a/lib/properties/imageRendering.js
+++ b/lib/properties/imageRendering.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('image-rendering', v);
     },
diff --git a/lib/properties/kerning.js b/lib/properties/kerning.js
index f56d032..e6b2602 100644
--- a/lib/properties/kerning.js
+++ b/lib/properties/kerning.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('kerning', v);
     },
diff --git a/lib/properties/left.js b/lib/properties/left.js
index 96e4cfa..c223b55 100644
--- a/lib/properties/left.js
+++ b/lib/properties/left.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('left', v);
     },
diff --git a/lib/properties/letterSpacing.js b/lib/properties/letterSpacing.js
index 8b589b3..9415eb4 100644
--- a/lib/properties/letterSpacing.js
+++ b/lib/properties/letterSpacing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('letter-spacing', v);
     },
diff --git a/lib/properties/lightingColor.js b/lib/properties/lightingColor.js
index b2b914b..88f5c32 100644
--- a/lib/properties/lightingColor.js
+++ b/lib/properties/lightingColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('lighting-color', v);
+        this.setProperty('lighting-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('lighting-color');
diff --git a/lib/properties/lineHeight.js b/lib/properties/lineHeight.js
index e0167c0..6f54744 100644
--- a/lib/properties/lineHeight.js
+++ b/lib/properties/lineHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('line-height', v);
     },
diff --git a/lib/properties/listStyle.js b/lib/properties/listStyle.js
index 27a18de..4178c12 100644
--- a/lib/properties/listStyle.js
+++ b/lib/properties/listStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('list-style', v);
     },
diff --git a/lib/properties/listStyleImage.js b/lib/properties/listStyleImage.js
index 4ebb7d9..f53f5b5 100644
--- a/lib/properties/listStyleImage.js
+++ b/lib/properties/listStyleImage.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('list-style-image', v);
     },
diff --git a/lib/properties/listStylePosition.js b/lib/properties/listStylePosition.js
index b554a93..fafb639 100644
--- a/lib/properties/listStylePosition.js
+++ b/lib/properties/listStylePosition.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('list-style-position', v);
     },
diff --git a/lib/properties/listStyleType.js b/lib/properties/listStyleType.js
index 4d1f291..555ddb6 100644
--- a/lib/properties/listStyleType.js
+++ b/lib/properties/listStyleType.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('list-style-type', v);
     },
diff --git a/lib/properties/margin.js b/lib/properties/margin.js
index 29d77c5..83b6317 100644
--- a/lib/properties/margin.js
+++ b/lib/properties/margin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('margin', v);
     },
diff --git a/lib/properties/marginBottom.js b/lib/properties/marginBottom.js
index 19d9b9b..05e4dd0 100644
--- a/lib/properties/marginBottom.js
+++ b/lib/properties/marginBottom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('margin-bottom', v);
     },
diff --git a/lib/properties/marginLeft.js b/lib/properties/marginLeft.js
index 6597dc2..820d311 100644
--- a/lib/properties/marginLeft.js
+++ b/lib/properties/marginLeft.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('margin-left', v);
     },
diff --git a/lib/properties/marginRight.js b/lib/properties/marginRight.js
index 1e9d4ba..396439e 100644
--- a/lib/properties/marginRight.js
+++ b/lib/properties/marginRight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('margin-right', v);
     },
diff --git a/lib/properties/marginTop.js b/lib/properties/marginTop.js
index d698cb8..125be65 100644
--- a/lib/properties/marginTop.js
+++ b/lib/properties/marginTop.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('margin-top', v);
     },
diff --git a/lib/properties/marker.js b/lib/properties/marker.js
index 09510e3..fa5366e 100644
--- a/lib/properties/marker.js
+++ b/lib/properties/marker.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marker', v);
     },
diff --git a/lib/properties/markerEnd.js b/lib/properties/markerEnd.js
index 70abca5..0b8a785 100644
--- a/lib/properties/markerEnd.js
+++ b/lib/properties/markerEnd.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marker-end', v);
     },
diff --git a/lib/properties/markerMid.js b/lib/properties/markerMid.js
index e25c67b..2671256 100644
--- a/lib/properties/markerMid.js
+++ b/lib/properties/markerMid.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marker-mid', v);
     },
diff --git a/lib/properties/markerOffset.js b/lib/properties/markerOffset.js
index 43497f0..fb513f8 100644
--- a/lib/properties/markerOffset.js
+++ b/lib/properties/markerOffset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marker-offset', v);
     },
diff --git a/lib/properties/markerStart.js b/lib/properties/markerStart.js
index 8748073..4d42027 100644
--- a/lib/properties/markerStart.js
+++ b/lib/properties/markerStart.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marker-start', v);
     },
diff --git a/lib/properties/marks.js b/lib/properties/marks.js
index add1ff7..8e45949 100644
--- a/lib/properties/marks.js
+++ b/lib/properties/marks.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('marks', v);
     },
diff --git a/lib/properties/mask.js b/lib/properties/mask.js
index bbc8b8b..aa70148 100644
--- a/lib/properties/mask.js
+++ b/lib/properties/mask.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('mask', v);
     },
diff --git a/lib/properties/maxHeight.js b/lib/properties/maxHeight.js
index d0073e0..b2ecfd7 100644
--- a/lib/properties/maxHeight.js
+++ b/lib/properties/maxHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('max-height', v);
     },
diff --git a/lib/properties/maxWidth.js b/lib/properties/maxWidth.js
index 9f18490..a2f8494 100644
--- a/lib/properties/maxWidth.js
+++ b/lib/properties/maxWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('max-width', v);
     },
diff --git a/lib/properties/minHeight.js b/lib/properties/minHeight.js
index 15c0804..3450bf4 100644
--- a/lib/properties/minHeight.js
+++ b/lib/properties/minHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('min-height', v);
     },
diff --git a/lib/properties/minWidth.js b/lib/properties/minWidth.js
index 88f8e59..64b3ba0 100644
--- a/lib/properties/minWidth.js
+++ b/lib/properties/minWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('min-width', v);
     },
diff --git a/lib/properties/opacity.js b/lib/properties/opacity.js
index c8720b7..53782b5 100644
--- a/lib/properties/opacity.js
+++ b/lib/properties/opacity.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseNumber = require('../parsers').parseNumber;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('opacity', v);
+        this.setProperty('opacity', parseNumber(v));
     },
     get: function () {
         return this.getPropertyValue('opacity');
diff --git a/lib/properties/orphans.js b/lib/properties/orphans.js
index cbec61a..8b26f47 100644
--- a/lib/properties/orphans.js
+++ b/lib/properties/orphans.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('orphans', v);
     },
diff --git a/lib/properties/outline.js b/lib/properties/outline.js
index 86f1bfb..ea6cca4 100644
--- a/lib/properties/outline.js
+++ b/lib/properties/outline.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('outline', v);
     },
diff --git a/lib/properties/outlineColor.js b/lib/properties/outlineColor.js
index e8c359c..8896485 100644
--- a/lib/properties/outlineColor.js
+++ b/lib/properties/outlineColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('outline-color', v);
+        this.setProperty('outline-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('outline-color');
diff --git a/lib/properties/outlineOffset.js b/lib/properties/outlineOffset.js
index 09d1dee..a8dc58f 100644
--- a/lib/properties/outlineOffset.js
+++ b/lib/properties/outlineOffset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('outline-offset', v);
     },
diff --git a/lib/properties/outlineStyle.js b/lib/properties/outlineStyle.js
index 0195ddd..fad5de1 100644
--- a/lib/properties/outlineStyle.js
+++ b/lib/properties/outlineStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('outline-style', v);
     },
diff --git a/lib/properties/outlineWidth.js b/lib/properties/outlineWidth.js
index 93ee1d6..5d2edb3 100644
--- a/lib/properties/outlineWidth.js
+++ b/lib/properties/outlineWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('outline-width', v);
     },
diff --git a/lib/properties/overflow.js b/lib/properties/overflow.js
index 0d39802..f51836f 100644
--- a/lib/properties/overflow.js
+++ b/lib/properties/overflow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('overflow', v);
     },
diff --git a/lib/properties/overflowX.js b/lib/properties/overflowX.js
index 6e0ba52..63728da 100644
--- a/lib/properties/overflowX.js
+++ b/lib/properties/overflowX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('overflow-x', v);
     },
diff --git a/lib/properties/overflowY.js b/lib/properties/overflowY.js
index 334ebbe..5101e96 100644
--- a/lib/properties/overflowY.js
+++ b/lib/properties/overflowY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('overflow-y', v);
     },
diff --git a/lib/properties/padding.js b/lib/properties/padding.js
index 1e5fb46..657c41d 100644
--- a/lib/properties/padding.js
+++ b/lib/properties/padding.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('padding', v);
     },
diff --git a/lib/properties/paddingBottom.js b/lib/properties/paddingBottom.js
index fc2118d..9fb30c3 100644
--- a/lib/properties/paddingBottom.js
+++ b/lib/properties/paddingBottom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('padding-bottom', v);
     },
diff --git a/lib/properties/paddingLeft.js b/lib/properties/paddingLeft.js
index 66c0f5c..82030ae 100644
--- a/lib/properties/paddingLeft.js
+++ b/lib/properties/paddingLeft.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('padding-left', v);
     },
diff --git a/lib/properties/paddingRight.js b/lib/properties/paddingRight.js
index f431616..486d91a 100644
--- a/lib/properties/paddingRight.js
+++ b/lib/properties/paddingRight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('padding-right', v);
     },
diff --git a/lib/properties/paddingTop.js b/lib/properties/paddingTop.js
index b64cde4..ed2f27e 100644
--- a/lib/properties/paddingTop.js
+++ b/lib/properties/paddingTop.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('padding-top', v);
     },
diff --git a/lib/properties/page.js b/lib/properties/page.js
index 0fdaa6b..7642293 100644
--- a/lib/properties/page.js
+++ b/lib/properties/page.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('page', v);
     },
diff --git a/lib/properties/pageBreakAfter.js b/lib/properties/pageBreakAfter.js
index 18d99d0..38e60bb 100644
--- a/lib/properties/pageBreakAfter.js
+++ b/lib/properties/pageBreakAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('page-break-after', v);
     },
diff --git a/lib/properties/pageBreakBefore.js b/lib/properties/pageBreakBefore.js
index 2323b6a..4da5623 100644
--- a/lib/properties/pageBreakBefore.js
+++ b/lib/properties/pageBreakBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('page-break-before', v);
     },
diff --git a/lib/properties/pageBreakInside.js b/lib/properties/pageBreakInside.js
index 04cb253..cb1ffa6 100644
--- a/lib/properties/pageBreakInside.js
+++ b/lib/properties/pageBreakInside.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('page-break-inside', v);
     },
diff --git a/lib/properties/pause.js b/lib/properties/pause.js
index 5bceee2..3ce825b 100644
--- a/lib/properties/pause.js
+++ b/lib/properties/pause.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pause', v);
     },
diff --git a/lib/properties/pauseAfter.js b/lib/properties/pauseAfter.js
index b603d8f..ccc5392 100644
--- a/lib/properties/pauseAfter.js
+++ b/lib/properties/pauseAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pause-after', v);
     },
diff --git a/lib/properties/pauseBefore.js b/lib/properties/pauseBefore.js
index 02ad3aa..a4f75ac 100644
--- a/lib/properties/pauseBefore.js
+++ b/lib/properties/pauseBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pause-before', v);
     },
diff --git a/lib/properties/pitch.js b/lib/properties/pitch.js
index c3f0dd2..7c593db 100644
--- a/lib/properties/pitch.js
+++ b/lib/properties/pitch.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pitch', v);
     },
diff --git a/lib/properties/pitchRange.js b/lib/properties/pitchRange.js
index fede5cf..dc0e6e0 100644
--- a/lib/properties/pitchRange.js
+++ b/lib/properties/pitchRange.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pitch-range', v);
     },
diff --git a/lib/properties/playDuring.js b/lib/properties/playDuring.js
index fe60c10..46a28d7 100644
--- a/lib/properties/playDuring.js
+++ b/lib/properties/playDuring.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('play-during', v);
     },
diff --git a/lib/properties/pointerEvents.js b/lib/properties/pointerEvents.js
index 4319c4d..626bd16 100644
--- a/lib/properties/pointerEvents.js
+++ b/lib/properties/pointerEvents.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('pointer-events', v);
     },
diff --git a/lib/properties/position.js b/lib/properties/position.js
index 82af9aa..f9d11dd 100644
--- a/lib/properties/position.js
+++ b/lib/properties/position.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('position', v);
     },
diff --git a/lib/properties/quotes.js b/lib/properties/quotes.js
index f905d5a..48d41e7 100644
--- a/lib/properties/quotes.js
+++ b/lib/properties/quotes.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('quotes', v);
     },
diff --git a/lib/properties/resize.js b/lib/properties/resize.js
index 8d61185..8ddd998 100644
--- a/lib/properties/resize.js
+++ b/lib/properties/resize.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('resize', v);
     },
diff --git a/lib/properties/richness.js b/lib/properties/richness.js
index 38a55c2..de2bcdf 100644
--- a/lib/properties/richness.js
+++ b/lib/properties/richness.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('richness', v);
     },
diff --git a/lib/properties/right.js b/lib/properties/right.js
index 48b7a99..f0f246c 100644
--- a/lib/properties/right.js
+++ b/lib/properties/right.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('right', v);
     },
diff --git a/lib/properties/shapeRendering.js b/lib/properties/shapeRendering.js
index 2222058..7d0350e 100644
--- a/lib/properties/shapeRendering.js
+++ b/lib/properties/shapeRendering.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('shape-rendering', v);
     },
diff --git a/lib/properties/size.js b/lib/properties/size.js
index f246788..cad46f7 100644
--- a/lib/properties/size.js
+++ b/lib/properties/size.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('size', v);
     },
diff --git a/lib/properties/speak.js b/lib/properties/speak.js
index 6d3e07a..2fbfebf 100644
--- a/lib/properties/speak.js
+++ b/lib/properties/speak.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('speak', v);
     },
diff --git a/lib/properties/speakHeader.js b/lib/properties/speakHeader.js
index cf3434f..318ff32 100644
--- a/lib/properties/speakHeader.js
+++ b/lib/properties/speakHeader.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('speak-header', v);
     },
diff --git a/lib/properties/speakNumeral.js b/lib/properties/speakNumeral.js
index 48773ff..cffe287 100644
--- a/lib/properties/speakNumeral.js
+++ b/lib/properties/speakNumeral.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('speak-numeral', v);
     },
diff --git a/lib/properties/speakPunctuation.js b/lib/properties/speakPunctuation.js
index 2062678..bd3f21c 100644
--- a/lib/properties/speakPunctuation.js
+++ b/lib/properties/speakPunctuation.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('speak-punctuation', v);
     },
diff --git a/lib/properties/speechRate.js b/lib/properties/speechRate.js
index 6e38e1b..1585866 100644
--- a/lib/properties/speechRate.js
+++ b/lib/properties/speechRate.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('speech-rate', v);
     },
diff --git a/lib/properties/src.js b/lib/properties/src.js
index e222956..38fb0d6 100644
--- a/lib/properties/src.js
+++ b/lib/properties/src.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('src', v);
     },
diff --git a/lib/properties/stopColor.js b/lib/properties/stopColor.js
index 6a1e43b..57551e4 100644
--- a/lib/properties/stopColor.js
+++ b/lib/properties/stopColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('stop-color', v);
+        this.setProperty('stop-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('stop-color');
diff --git a/lib/properties/stopOpacity.js b/lib/properties/stopOpacity.js
index e5bfc1b..fd37f7e 100644
--- a/lib/properties/stopOpacity.js
+++ b/lib/properties/stopOpacity.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stop-opacity', v);
     },
diff --git a/lib/properties/stress.js b/lib/properties/stress.js
index 2e7b5d5..ef33816 100644
--- a/lib/properties/stress.js
+++ b/lib/properties/stress.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stress', v);
     },
diff --git a/lib/properties/stroke.js b/lib/properties/stroke.js
index dc5ef00..ba874e0 100644
--- a/lib/properties/stroke.js
+++ b/lib/properties/stroke.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke', v);
     },
diff --git a/lib/properties/strokeDasharray.js b/lib/properties/strokeDasharray.js
index 169b682..a4743d8 100644
--- a/lib/properties/strokeDasharray.js
+++ b/lib/properties/strokeDasharray.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-dasharray', v);
     },
diff --git a/lib/properties/strokeDashoffset.js b/lib/properties/strokeDashoffset.js
index a5c8a96..ca32be0 100644
--- a/lib/properties/strokeDashoffset.js
+++ b/lib/properties/strokeDashoffset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-dashoffset', v);
     },
diff --git a/lib/properties/strokeLinecap.js b/lib/properties/strokeLinecap.js
index 225c636..b4d3328 100644
--- a/lib/properties/strokeLinecap.js
+++ b/lib/properties/strokeLinecap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-linecap', v);
     },
diff --git a/lib/properties/strokeLinejoin.js b/lib/properties/strokeLinejoin.js
index 3921d2e..f626276 100644
--- a/lib/properties/strokeLinejoin.js
+++ b/lib/properties/strokeLinejoin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-linejoin', v);
     },
diff --git a/lib/properties/strokeMiterlimit.js b/lib/properties/strokeMiterlimit.js
index ae2e9f3..331c1b9 100644
--- a/lib/properties/strokeMiterlimit.js
+++ b/lib/properties/strokeMiterlimit.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-miterlimit', v);
     },
diff --git a/lib/properties/strokeOpacity.js b/lib/properties/strokeOpacity.js
index 92699a8..44468c4 100644
--- a/lib/properties/strokeOpacity.js
+++ b/lib/properties/strokeOpacity.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-opacity', v);
     },
diff --git a/lib/properties/strokeWidth.js b/lib/properties/strokeWidth.js
index b6b920d..f4d09b8 100644
--- a/lib/properties/strokeWidth.js
+++ b/lib/properties/strokeWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('stroke-width', v);
     },
diff --git a/lib/properties/tableLayout.js b/lib/properties/tableLayout.js
index 191cebe..48c9739 100644
--- a/lib/properties/tableLayout.js
+++ b/lib/properties/tableLayout.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('table-layout', v);
     },
diff --git a/lib/properties/textAlign.js b/lib/properties/textAlign.js
index e55304f..387c236 100644
--- a/lib/properties/textAlign.js
+++ b/lib/properties/textAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-align', v);
     },
diff --git a/lib/properties/textAnchor.js b/lib/properties/textAnchor.js
index d1090c4..f932d7b 100644
--- a/lib/properties/textAnchor.js
+++ b/lib/properties/textAnchor.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-anchor', v);
     },
diff --git a/lib/properties/textDecoration.js b/lib/properties/textDecoration.js
index f537022..64f5f73 100644
--- a/lib/properties/textDecoration.js
+++ b/lib/properties/textDecoration.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-decoration', v);
     },
diff --git a/lib/properties/textIndent.js b/lib/properties/textIndent.js
index c96c7fe..7a52506 100644
--- a/lib/properties/textIndent.js
+++ b/lib/properties/textIndent.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-indent', v);
     },
diff --git a/lib/properties/textLineThrough.js b/lib/properties/textLineThrough.js
index 28d7a35..639a7b2 100644
--- a/lib/properties/textLineThrough.js
+++ b/lib/properties/textLineThrough.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-line-through', v);
     },
diff --git a/lib/properties/textLineThroughColor.js b/lib/properties/textLineThroughColor.js
index 96f9d11..5a1ae18 100644
--- a/lib/properties/textLineThroughColor.js
+++ b/lib/properties/textLineThroughColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('text-line-through-color', v);
+        this.setProperty('text-line-through-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('text-line-through-color');
diff --git a/lib/properties/textLineThroughMode.js b/lib/properties/textLineThroughMode.js
index 0bc6531..97a4cf7 100644
--- a/lib/properties/textLineThroughMode.js
+++ b/lib/properties/textLineThroughMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-line-through-mode', v);
     },
diff --git a/lib/properties/textLineThroughStyle.js b/lib/properties/textLineThroughStyle.js
index c7fd703..a62c671 100644
--- a/lib/properties/textLineThroughStyle.js
+++ b/lib/properties/textLineThroughStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-line-through-style', v);
     },
diff --git a/lib/properties/textLineThroughWidth.js b/lib/properties/textLineThroughWidth.js
index d526960..8a8ea9f 100644
--- a/lib/properties/textLineThroughWidth.js
+++ b/lib/properties/textLineThroughWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-line-through-width', v);
     },
diff --git a/lib/properties/textOverflow.js b/lib/properties/textOverflow.js
index cdd35df..b34743b 100644
--- a/lib/properties/textOverflow.js
+++ b/lib/properties/textOverflow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-overflow', v);
     },
diff --git a/lib/properties/textOverline.js b/lib/properties/textOverline.js
index e0d17c8..48113d3 100644
--- a/lib/properties/textOverline.js
+++ b/lib/properties/textOverline.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-overline', v);
     },
diff --git a/lib/properties/textOverlineColor.js b/lib/properties/textOverlineColor.js
index 311c94f..e3d1e64 100644
--- a/lib/properties/textOverlineColor.js
+++ b/lib/properties/textOverlineColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('text-overline-color', v);
+        this.setProperty('text-overline-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('text-overline-color');
diff --git a/lib/properties/textOverlineMode.js b/lib/properties/textOverlineMode.js
index ccb93bc..a29e629 100644
--- a/lib/properties/textOverlineMode.js
+++ b/lib/properties/textOverlineMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-overline-mode', v);
     },
diff --git a/lib/properties/textOverlineStyle.js b/lib/properties/textOverlineStyle.js
index c501d85..b92f374 100644
--- a/lib/properties/textOverlineStyle.js
+++ b/lib/properties/textOverlineStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-overline-style', v);
     },
diff --git a/lib/properties/textOverlineWidth.js b/lib/properties/textOverlineWidth.js
index db05977..4763821 100644
--- a/lib/properties/textOverlineWidth.js
+++ b/lib/properties/textOverlineWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-overline-width', v);
     },
diff --git a/lib/properties/textRendering.js b/lib/properties/textRendering.js
index 7b68d93..1c16cda 100644
--- a/lib/properties/textRendering.js
+++ b/lib/properties/textRendering.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-rendering', v);
     },
diff --git a/lib/properties/textShadow.js b/lib/properties/textShadow.js
index 707731a..6efbc8f 100644
--- a/lib/properties/textShadow.js
+++ b/lib/properties/textShadow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-shadow', v);
     },
diff --git a/lib/properties/textTransform.js b/lib/properties/textTransform.js
index 388745d..2d4a732 100644
--- a/lib/properties/textTransform.js
+++ b/lib/properties/textTransform.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-transform', v);
     },
diff --git a/lib/properties/textUnderline.js b/lib/properties/textUnderline.js
index a414c1f..6e92bd6 100644
--- a/lib/properties/textUnderline.js
+++ b/lib/properties/textUnderline.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-underline', v);
     },
diff --git a/lib/properties/textUnderlineColor.js b/lib/properties/textUnderlineColor.js
index 7efd1f7..91ae9d1 100644
--- a/lib/properties/textUnderlineColor.js
+++ b/lib/properties/textUnderlineColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('text-underline-color', v);
+        this.setProperty('text-underline-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('text-underline-color');
diff --git a/lib/properties/textUnderlineMode.js b/lib/properties/textUnderlineMode.js
index ff94792..24deaec 100644
--- a/lib/properties/textUnderlineMode.js
+++ b/lib/properties/textUnderlineMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-underline-mode', v);
     },
diff --git a/lib/properties/textUnderlineStyle.js b/lib/properties/textUnderlineStyle.js
index 718c35b..ac21815 100644
--- a/lib/properties/textUnderlineStyle.js
+++ b/lib/properties/textUnderlineStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-underline-style', v);
     },
diff --git a/lib/properties/textUnderlineWidth.js b/lib/properties/textUnderlineWidth.js
index f4e108d..3ca8b17 100644
--- a/lib/properties/textUnderlineWidth.js
+++ b/lib/properties/textUnderlineWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('text-underline-width', v);
     },
diff --git a/lib/properties/top.js b/lib/properties/top.js
index 598f4b5..589a8c1 100644
--- a/lib/properties/top.js
+++ b/lib/properties/top.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('top', v);
     },
diff --git a/lib/properties/unicodeBidi.js b/lib/properties/unicodeBidi.js
index 197a679..a499eae 100644
--- a/lib/properties/unicodeBidi.js
+++ b/lib/properties/unicodeBidi.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('unicode-bidi', v);
     },
diff --git a/lib/properties/unicodeRange.js b/lib/properties/unicodeRange.js
index 20acaa0..d35dfa8 100644
--- a/lib/properties/unicodeRange.js
+++ b/lib/properties/unicodeRange.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('unicode-range', v);
     },
diff --git a/lib/properties/vectorEffect.js b/lib/properties/vectorEffect.js
index 451ae66..ebb4301 100644
--- a/lib/properties/vectorEffect.js
+++ b/lib/properties/vectorEffect.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('vector-effect', v);
     },
diff --git a/lib/properties/verticalAlign.js b/lib/properties/verticalAlign.js
index 2c8b770..ce74c04 100644
--- a/lib/properties/verticalAlign.js
+++ b/lib/properties/verticalAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('vertical-align', v);
     },
diff --git a/lib/properties/visibility.js b/lib/properties/visibility.js
index 0ede3e4..648e900 100644
--- a/lib/properties/visibility.js
+++ b/lib/properties/visibility.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('visibility', v);
     },
diff --git a/lib/properties/voiceFamily.js b/lib/properties/voiceFamily.js
index 3fd83d6..00723e7 100644
--- a/lib/properties/voiceFamily.js
+++ b/lib/properties/voiceFamily.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('voic-family', v);
     },
diff --git a/lib/properties/volume.js b/lib/properties/volume.js
index 0e68c91..522b712 100644
--- a/lib/properties/volume.js
+++ b/lib/properties/volume.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('volume', v);
     },
diff --git a/lib/properties/webkitAnimation.js b/lib/properties/webkitAnimation.js
index f88d5f0..d7b4194 100644
--- a/lib/properties/webkitAnimation.js
+++ b/lib/properties/webkitAnimation.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation', v);
     },
diff --git a/lib/properties/webkitAnimationDelay.js b/lib/properties/webkitAnimationDelay.js
index bcf531f..05d797a 100644
--- a/lib/properties/webkitAnimationDelay.js
+++ b/lib/properties/webkitAnimationDelay.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-delay', v);
     },
diff --git a/lib/properties/webkitAnimationDirection.js b/lib/properties/webkitAnimationDirection.js
index f538e4b..0bb7c01 100644
--- a/lib/properties/webkitAnimationDirection.js
+++ b/lib/properties/webkitAnimationDirection.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-direction', v);
     },
diff --git a/lib/properties/webkitAnimationDuration.js b/lib/properties/webkitAnimationDuration.js
index 883e0e5..e18504d 100644
--- a/lib/properties/webkitAnimationDuration.js
+++ b/lib/properties/webkitAnimationDuration.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-duration', v);
     },
diff --git a/lib/properties/webkitAnimationFillMode.js b/lib/properties/webkitAnimationFillMode.js
index 2e75fc7..3fc8263 100644
--- a/lib/properties/webkitAnimationFillMode.js
+++ b/lib/properties/webkitAnimationFillMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-fill-mode', v);
     },
diff --git a/lib/properties/webkitAnimationIterationCount.js b/lib/properties/webkitAnimationIterationCount.js
index 1f36353..276a994 100644
--- a/lib/properties/webkitAnimationIterationCount.js
+++ b/lib/properties/webkitAnimationIterationCount.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-iteration-count', v);
     },
diff --git a/lib/properties/webkitAnimationName.js b/lib/properties/webkitAnimationName.js
index 743cc49..b58bcc1 100644
--- a/lib/properties/webkitAnimationName.js
+++ b/lib/properties/webkitAnimationName.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-name', v);
     },
diff --git a/lib/properties/webkitAnimationPlayState.js b/lib/properties/webkitAnimationPlayState.js
index 2502b24..608ec9c 100644
--- a/lib/properties/webkitAnimationPlayState.js
+++ b/lib/properties/webkitAnimationPlayState.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-play-state', v);
     },
diff --git a/lib/properties/webkitAnimationTimingFunction.js b/lib/properties/webkitAnimationTimingFunction.js
index 6f10914..ef71365 100644
--- a/lib/properties/webkitAnimationTimingFunction.js
+++ b/lib/properties/webkitAnimationTimingFunction.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-animation-timing-function', v);
     },
diff --git a/lib/properties/webkitAppearance.js b/lib/properties/webkitAppearance.js
index 91ddf41..726bc26 100644
--- a/lib/properties/webkitAppearance.js
+++ b/lib/properties/webkitAppearance.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-appearance', v);
     },
diff --git a/lib/properties/webkitAspectRatio.js b/lib/properties/webkitAspectRatio.js
index a27c49f..a6153b7 100644
--- a/lib/properties/webkitAspectRatio.js
+++ b/lib/properties/webkitAspectRatio.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-aspect-ratio', v);
     },
diff --git a/lib/properties/webkitBackfaceVisibility.js b/lib/properties/webkitBackfaceVisibility.js
index 2cf203c..745d423 100644
--- a/lib/properties/webkitBackfaceVisibility.js
+++ b/lib/properties/webkitBackfaceVisibility.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-backface-visibility', v);
     },
diff --git a/lib/properties/webkitBackgroundClip.js b/lib/properties/webkitBackgroundClip.js
index 0a17fa6..3eb46a4 100644
--- a/lib/properties/webkitBackgroundClip.js
+++ b/lib/properties/webkitBackgroundClip.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-background-clip', v);
     },
diff --git a/lib/properties/webkitBackgroundComposite.js b/lib/properties/webkitBackgroundComposite.js
index 13e79df..843f837 100644
--- a/lib/properties/webkitBackgroundComposite.js
+++ b/lib/properties/webkitBackgroundComposite.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-background-composite', v);
     },
diff --git a/lib/properties/webkitBackgroundOrigin.js b/lib/properties/webkitBackgroundOrigin.js
index fd24141..3236af8 100644
--- a/lib/properties/webkitBackgroundOrigin.js
+++ b/lib/properties/webkitBackgroundOrigin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-background-origin', v);
     },
diff --git a/lib/properties/webkitBackgroundSize.js b/lib/properties/webkitBackgroundSize.js
index 06fe7d1..fdaf85a 100644
--- a/lib/properties/webkitBackgroundSize.js
+++ b/lib/properties/webkitBackgroundSize.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-background-size', v);
     },
diff --git a/lib/properties/webkitBorderAfter.js b/lib/properties/webkitBorderAfter.js
index 827a08b..3783e05 100644
--- a/lib/properties/webkitBorderAfter.js
+++ b/lib/properties/webkitBorderAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-after', v);
     },
diff --git a/lib/properties/webkitBorderAfterColor.js b/lib/properties/webkitBorderAfterColor.js
index 6ed9cc5..0db9909 100644
--- a/lib/properties/webkitBorderAfterColor.js
+++ b/lib/properties/webkitBorderAfterColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-border-after-color', v);
+        this.setProperty('-webkit-border-after-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-border-after-color');
diff --git a/lib/properties/webkitBorderAfterStyle.js b/lib/properties/webkitBorderAfterStyle.js
index aa57436..e826697 100644
--- a/lib/properties/webkitBorderAfterStyle.js
+++ b/lib/properties/webkitBorderAfterStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-after-style', v);
     },
diff --git a/lib/properties/webkitBorderAfterWidth.js b/lib/properties/webkitBorderAfterWidth.js
index a15ca9b..10fdfbc 100644
--- a/lib/properties/webkitBorderAfterWidth.js
+++ b/lib/properties/webkitBorderAfterWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-after-width', v);
     },
diff --git a/lib/properties/webkitBorderBefore.js b/lib/properties/webkitBorderBefore.js
index 3022930..b9a174c 100644
--- a/lib/properties/webkitBorderBefore.js
+++ b/lib/properties/webkitBorderBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-before', v);
     },
diff --git a/lib/properties/webkitBorderBeforeColor.js b/lib/properties/webkitBorderBeforeColor.js
index 847f9be..4d97886 100644
--- a/lib/properties/webkitBorderBeforeColor.js
+++ b/lib/properties/webkitBorderBeforeColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-border-before-color', v);
+        this.setProperty('-webkit-border-before-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-border-before-color');
diff --git a/lib/properties/webkitBorderBeforeStyle.js b/lib/properties/webkitBorderBeforeStyle.js
index cb80965..d37eb87 100644
--- a/lib/properties/webkitBorderBeforeStyle.js
+++ b/lib/properties/webkitBorderBeforeStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-before-style', v);
     },
diff --git a/lib/properties/webkitBorderBeforeWidth.js b/lib/properties/webkitBorderBeforeWidth.js
index 5b2d038..706e989 100644
--- a/lib/properties/webkitBorderBeforeWidth.js
+++ b/lib/properties/webkitBorderBeforeWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-before-width', v);
     },
diff --git a/lib/properties/webkitBorderEnd.js b/lib/properties/webkitBorderEnd.js
index c747b04..4e0253b 100644
--- a/lib/properties/webkitBorderEnd.js
+++ b/lib/properties/webkitBorderEnd.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-end', v);
     },
diff --git a/lib/properties/webkitBorderEndColor.js b/lib/properties/webkitBorderEndColor.js
index dcd0bae..1bdccc5 100644
--- a/lib/properties/webkitBorderEndColor.js
+++ b/lib/properties/webkitBorderEndColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-border-end-color', v);
+        this.setProperty('-webkit-border-end-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-border-end-color');
diff --git a/lib/properties/webkitBorderEndStyle.js b/lib/properties/webkitBorderEndStyle.js
index 72aab80..d8d1bee 100644
--- a/lib/properties/webkitBorderEndStyle.js
+++ b/lib/properties/webkitBorderEndStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-end-style', v);
     },
diff --git a/lib/properties/webkitBorderEndWidth.js b/lib/properties/webkitBorderEndWidth.js
index 1f0faa1..c8795a8 100644
--- a/lib/properties/webkitBorderEndWidth.js
+++ b/lib/properties/webkitBorderEndWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-end-width', v);
     },
diff --git a/lib/properties/webkitBorderFit.js b/lib/properties/webkitBorderFit.js
index 9f70625..17fe4d9 100644
--- a/lib/properties/webkitBorderFit.js
+++ b/lib/properties/webkitBorderFit.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-fit', v);
     },
diff --git a/lib/properties/webkitBorderHorizontalSpacing.js b/lib/properties/webkitBorderHorizontalSpacing.js
index 1ca12ab..5c51137 100644
--- a/lib/properties/webkitBorderHorizontalSpacing.js
+++ b/lib/properties/webkitBorderHorizontalSpacing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-horizontal-spacing', v);
     },
diff --git a/lib/properties/webkitBorderImage.js b/lib/properties/webkitBorderImage.js
index cdd02cc..b4617ec 100644
--- a/lib/properties/webkitBorderImage.js
+++ b/lib/properties/webkitBorderImage.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-image', v);
     },
diff --git a/lib/properties/webkitBorderRadius.js b/lib/properties/webkitBorderRadius.js
index 01e0d76..0ca93ec 100644
--- a/lib/properties/webkitBorderRadius.js
+++ b/lib/properties/webkitBorderRadius.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-radius', v);
     },
diff --git a/lib/properties/webkitBorderStart.js b/lib/properties/webkitBorderStart.js
index f0f62da..f468802 100644
--- a/lib/properties/webkitBorderStart.js
+++ b/lib/properties/webkitBorderStart.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-start', v);
     },
diff --git a/lib/properties/webkitBorderStartColor.js b/lib/properties/webkitBorderStartColor.js
index 447af2f..4a21c52 100644
--- a/lib/properties/webkitBorderStartColor.js
+++ b/lib/properties/webkitBorderStartColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-border-start-color', v);
+        this.setProperty('-webkit-border-start-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-border-start-color');
diff --git a/lib/properties/webkitBorderStartStyle.js b/lib/properties/webkitBorderStartStyle.js
index 01d9688..db32213 100644
--- a/lib/properties/webkitBorderStartStyle.js
+++ b/lib/properties/webkitBorderStartStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-start-style', v);
     },
diff --git a/lib/properties/webkitBorderStartWidth.js b/lib/properties/webkitBorderStartWidth.js
index 890b9b0..b955e1a 100644
--- a/lib/properties/webkitBorderStartWidth.js
+++ b/lib/properties/webkitBorderStartWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-start-width', v);
     },
diff --git a/lib/properties/webkitBorderVerticalSpacing.js b/lib/properties/webkitBorderVerticalSpacing.js
index a517ed9..89f30fa 100644
--- a/lib/properties/webkitBorderVerticalSpacing.js
+++ b/lib/properties/webkitBorderVerticalSpacing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-border-vertical-spacing', v);
     },
diff --git a/lib/properties/webkitBoxAlign.js b/lib/properties/webkitBoxAlign.js
index 200387f..c3a8717 100644
--- a/lib/properties/webkitBoxAlign.js
+++ b/lib/properties/webkitBoxAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-align', v);
     },
diff --git a/lib/properties/webkitBoxDirection.js b/lib/properties/webkitBoxDirection.js
index ed2dc48..d3f974d 100644
--- a/lib/properties/webkitBoxDirection.js
+++ b/lib/properties/webkitBoxDirection.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-direction', v);
     },
diff --git a/lib/properties/webkitBoxFlex.js b/lib/properties/webkitBoxFlex.js
index 945f888..e0f73b5 100644
--- a/lib/properties/webkitBoxFlex.js
+++ b/lib/properties/webkitBoxFlex.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-flex', v);
     },
diff --git a/lib/properties/webkitBoxFlexGroup.js b/lib/properties/webkitBoxFlexGroup.js
index dba0b25..f968e45 100644
--- a/lib/properties/webkitBoxFlexGroup.js
+++ b/lib/properties/webkitBoxFlexGroup.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-flex-group', v);
     },
diff --git a/lib/properties/webkitBoxLines.js b/lib/properties/webkitBoxLines.js
index 006574e..f8ac0dc 100644
--- a/lib/properties/webkitBoxLines.js
+++ b/lib/properties/webkitBoxLines.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-lines', v);
     },
diff --git a/lib/properties/webkitBoxOrdinalGroup.js b/lib/properties/webkitBoxOrdinalGroup.js
index eaa373c..d3d2aa7 100644
--- a/lib/properties/webkitBoxOrdinalGroup.js
+++ b/lib/properties/webkitBoxOrdinalGroup.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-ordinal-group', v);
     },
diff --git a/lib/properties/webkitBoxOrient.js b/lib/properties/webkitBoxOrient.js
index 7e34c3b..1427f0e 100644
--- a/lib/properties/webkitBoxOrient.js
+++ b/lib/properties/webkitBoxOrient.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-orient', v);
     },
diff --git a/lib/properties/webkitBoxPack.js b/lib/properties/webkitBoxPack.js
index b6966af..8a2faf8 100644
--- a/lib/properties/webkitBoxPack.js
+++ b/lib/properties/webkitBoxPack.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-pack', v);
     },
diff --git a/lib/properties/webkitBoxReflect.js b/lib/properties/webkitBoxReflect.js
index f01c20c..2548a26 100644
--- a/lib/properties/webkitBoxReflect.js
+++ b/lib/properties/webkitBoxReflect.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-reflect', v);
     },
diff --git a/lib/properties/webkitBoxShadow.js b/lib/properties/webkitBoxShadow.js
index 013180f..9393d13 100644
--- a/lib/properties/webkitBoxShadow.js
+++ b/lib/properties/webkitBoxShadow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-box-shadow', v);
     },
diff --git a/lib/properties/webkitColorCorrection.js b/lib/properties/webkitColorCorrection.js
index b03fccc..825f52e 100644
--- a/lib/properties/webkitColorCorrection.js
+++ b/lib/properties/webkitColorCorrection.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-color-correction', v);
     },
diff --git a/lib/properties/webkitColumnAxis.js b/lib/properties/webkitColumnAxis.js
index 681ab5b..f0970f4 100644
--- a/lib/properties/webkitColumnAxis.js
+++ b/lib/properties/webkitColumnAxis.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-axis', v);
     },
diff --git a/lib/properties/webkitColumnBreakAfter.js b/lib/properties/webkitColumnBreakAfter.js
index 9f11205..56b3b4e 100644
--- a/lib/properties/webkitColumnBreakAfter.js
+++ b/lib/properties/webkitColumnBreakAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-break-after', v);
     },
diff --git a/lib/properties/webkitColumnBreakBefore.js b/lib/properties/webkitColumnBreakBefore.js
index 09441b6..6c69601 100644
--- a/lib/properties/webkitColumnBreakBefore.js
+++ b/lib/properties/webkitColumnBreakBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-break-before', v);
     },
diff --git a/lib/properties/webkitColumnBreakInside.js b/lib/properties/webkitColumnBreakInside.js
index ae25b28..d02e5e9 100644
--- a/lib/properties/webkitColumnBreakInside.js
+++ b/lib/properties/webkitColumnBreakInside.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-break-inside', v);
     },
diff --git a/lib/properties/webkitColumnCount.js b/lib/properties/webkitColumnCount.js
index e41d052..f5b0d6a 100644
--- a/lib/properties/webkitColumnCount.js
+++ b/lib/properties/webkitColumnCount.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-count', v);
     },
diff --git a/lib/properties/webkitColumnGap.js b/lib/properties/webkitColumnGap.js
index c863817..eb94671 100644
--- a/lib/properties/webkitColumnGap.js
+++ b/lib/properties/webkitColumnGap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-gap', v);
     },
diff --git a/lib/properties/webkitColumnRule.js b/lib/properties/webkitColumnRule.js
index 50fdcc7..d0f9efe 100644
--- a/lib/properties/webkitColumnRule.js
+++ b/lib/properties/webkitColumnRule.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-rule', v);
     },
diff --git a/lib/properties/webkitColumnRuleColor.js b/lib/properties/webkitColumnRuleColor.js
index b54ce73..41051a4 100644
--- a/lib/properties/webkitColumnRuleColor.js
+++ b/lib/properties/webkitColumnRuleColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-column-rule-color', v);
+        this.setProperty('-webkit-column-rule-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-column-rule-color');
diff --git a/lib/properties/webkitColumnRuleStyle.js b/lib/properties/webkitColumnRuleStyle.js
index ea7bba7..cf8b234 100644
--- a/lib/properties/webkitColumnRuleStyle.js
+++ b/lib/properties/webkitColumnRuleStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-rule-style', v);
     },
diff --git a/lib/properties/webkitColumnRuleWidth.js b/lib/properties/webkitColumnRuleWidth.js
index 30a3732..a3dd265 100644
--- a/lib/properties/webkitColumnRuleWidth.js
+++ b/lib/properties/webkitColumnRuleWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-rule-width', v);
     },
diff --git a/lib/properties/webkitColumnSpan.js b/lib/properties/webkitColumnSpan.js
index e203ce8..b0619cf 100644
--- a/lib/properties/webkitColumnSpan.js
+++ b/lib/properties/webkitColumnSpan.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-span', v);
     },
diff --git a/lib/properties/webkitColumnWidth.js b/lib/properties/webkitColumnWidth.js
index 813f7b3..3bcfa9d 100644
--- a/lib/properties/webkitColumnWidth.js
+++ b/lib/properties/webkitColumnWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-column-width', v);
     },
diff --git a/lib/properties/webkitColumns.js b/lib/properties/webkitColumns.js
index 2bfc219..b1684c6 100644
--- a/lib/properties/webkitColumns.js
+++ b/lib/properties/webkitColumns.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-columns', v);
     },
diff --git a/lib/properties/webkitFilter.js b/lib/properties/webkitFilter.js
index 2ec0f6d..fd8833f 100644
--- a/lib/properties/webkitFilter.js
+++ b/lib/properties/webkitFilter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-filter', v);
     },
diff --git a/lib/properties/webkitFlexAlign.js b/lib/properties/webkitFlexAlign.js
index a5d6095..634880d 100644
--- a/lib/properties/webkitFlexAlign.js
+++ b/lib/properties/webkitFlexAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-align', v);
     },
diff --git a/lib/properties/webkitFlexDirection.js b/lib/properties/webkitFlexDirection.js
index 3c38731..dfb4ade 100644
--- a/lib/properties/webkitFlexDirection.js
+++ b/lib/properties/webkitFlexDirection.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-direction', v);
     },
diff --git a/lib/properties/webkitFlexFlow.js b/lib/properties/webkitFlexFlow.js
index caf24d6..ab63696 100644
--- a/lib/properties/webkitFlexFlow.js
+++ b/lib/properties/webkitFlexFlow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-flow', v);
     },
diff --git a/lib/properties/webkitFlexItemAlign.js b/lib/properties/webkitFlexItemAlign.js
index 34b70e5..26a7935 100644
--- a/lib/properties/webkitFlexItemAlign.js
+++ b/lib/properties/webkitFlexItemAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-item-align', v);
     },
diff --git a/lib/properties/webkitFlexLinePack.js b/lib/properties/webkitFlexLinePack.js
index fd5fb3d..970e6b4 100644
--- a/lib/properties/webkitFlexLinePack.js
+++ b/lib/properties/webkitFlexLinePack.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-line-pack', v);
     },
diff --git a/lib/properties/webkitFlexOrder.js b/lib/properties/webkitFlexOrder.js
index 74989f1..16d6a1e 100644
--- a/lib/properties/webkitFlexOrder.js
+++ b/lib/properties/webkitFlexOrder.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-order', v);
     },
diff --git a/lib/properties/webkitFlexPack.js b/lib/properties/webkitFlexPack.js
index b678f9c..6819f35 100644
--- a/lib/properties/webkitFlexPack.js
+++ b/lib/properties/webkitFlexPack.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-pack', v);
     },
diff --git a/lib/properties/webkitFlexWrap.js b/lib/properties/webkitFlexWrap.js
index b4a2f2c..eb3f1fd 100644
--- a/lib/properties/webkitFlexWrap.js
+++ b/lib/properties/webkitFlexWrap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flex-wrap', v);
     },
diff --git a/lib/properties/webkitFlowFrom.js b/lib/properties/webkitFlowFrom.js
index 4ee5f6e..ace3f3c 100644
--- a/lib/properties/webkitFlowFrom.js
+++ b/lib/properties/webkitFlowFrom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flow-from', v);
     },
diff --git a/lib/properties/webkitFlowInto.js b/lib/properties/webkitFlowInto.js
index 5e82dd6..4ad871f 100644
--- a/lib/properties/webkitFlowInto.js
+++ b/lib/properties/webkitFlowInto.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-flow-into', v);
     },
diff --git a/lib/properties/webkitFontFeatureSettings.js b/lib/properties/webkitFontFeatureSettings.js
index 2d0eb3a..af5c2d0 100644
--- a/lib/properties/webkitFontFeatureSettings.js
+++ b/lib/properties/webkitFontFeatureSettings.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-font-feature-settings', v);
     },
diff --git a/lib/properties/webkitFontKerning.js b/lib/properties/webkitFontKerning.js
index 15568a1..e67f704 100644
--- a/lib/properties/webkitFontKerning.js
+++ b/lib/properties/webkitFontKerning.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-font-kerning', v);
     },
diff --git a/lib/properties/webkitFontSizeDelta.js b/lib/properties/webkitFontSizeDelta.js
index 515ca72..ada59ba 100644
--- a/lib/properties/webkitFontSizeDelta.js
+++ b/lib/properties/webkitFontSizeDelta.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-font-size-delta', v);
     },
diff --git a/lib/properties/webkitFontSmoothing.js b/lib/properties/webkitFontSmoothing.js
index 2a16ae0..b7fcd49 100644
--- a/lib/properties/webkitFontSmoothing.js
+++ b/lib/properties/webkitFontSmoothing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-font-smoothing', v);
     },
diff --git a/lib/properties/webkitFontVariantLigatures.js b/lib/properties/webkitFontVariantLigatures.js
index 3496d6e..ba1ff71 100644
--- a/lib/properties/webkitFontVariantLigatures.js
+++ b/lib/properties/webkitFontVariantLigatures.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-font-variant-ligatures', v);
     },
diff --git a/lib/properties/webkitHighlight.js b/lib/properties/webkitHighlight.js
index a0efa5b..67975fb 100644
--- a/lib/properties/webkitHighlight.js
+++ b/lib/properties/webkitHighlight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-highlight', v);
     },
diff --git a/lib/properties/webkitHyphenateCharacter.js b/lib/properties/webkitHyphenateCharacter.js
index bc893d9..98ca4a7 100644
--- a/lib/properties/webkitHyphenateCharacter.js
+++ b/lib/properties/webkitHyphenateCharacter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-hyphenate-character', v);
     },
diff --git a/lib/properties/webkitHyphenateLimitAfter.js b/lib/properties/webkitHyphenateLimitAfter.js
index a42bf6b..274c876 100644
--- a/lib/properties/webkitHyphenateLimitAfter.js
+++ b/lib/properties/webkitHyphenateLimitAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-hyphenate-limit-after', v);
     },
diff --git a/lib/properties/webkitHyphenateLimitBefore.js b/lib/properties/webkitHyphenateLimitBefore.js
index ce82f23..aa24a05 100644
--- a/lib/properties/webkitHyphenateLimitBefore.js
+++ b/lib/properties/webkitHyphenateLimitBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-hyphenate-limit-before', v);
     },
diff --git a/lib/properties/webkitHyphenateLimitLines.js b/lib/properties/webkitHyphenateLimitLines.js
index 96ead8b..e7c4e2d 100644
--- a/lib/properties/webkitHyphenateLimitLines.js
+++ b/lib/properties/webkitHyphenateLimitLines.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-hyphenate-limit-lines', v);
     },
diff --git a/lib/properties/webkitHyphens.js b/lib/properties/webkitHyphens.js
index e6ea1a8..58452ff 100644
--- a/lib/properties/webkitHyphens.js
+++ b/lib/properties/webkitHyphens.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-hyphens', v);
     },
diff --git a/lib/properties/webkitLineAlign.js b/lib/properties/webkitLineAlign.js
index 26dedce..369f4a3 100644
--- a/lib/properties/webkitLineAlign.js
+++ b/lib/properties/webkitLineAlign.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-align', v);
     },
diff --git a/lib/properties/webkitLineBoxContain.js b/lib/properties/webkitLineBoxContain.js
index dd7bcdf..9e45dfc 100644
--- a/lib/properties/webkitLineBoxContain.js
+++ b/lib/properties/webkitLineBoxContain.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-box-contain', v);
     },
diff --git a/lib/properties/webkitLineBreak.js b/lib/properties/webkitLineBreak.js
index e872d7a..bb11449 100644
--- a/lib/properties/webkitLineBreak.js
+++ b/lib/properties/webkitLineBreak.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-break', v);
     },
diff --git a/lib/properties/webkitLineClamp.js b/lib/properties/webkitLineClamp.js
index c0bfd71..2ae350b 100644
--- a/lib/properties/webkitLineClamp.js
+++ b/lib/properties/webkitLineClamp.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-clamp', v);
     },
diff --git a/lib/properties/webkitLineGrid.js b/lib/properties/webkitLineGrid.js
index 4c2b18f..8493263 100644
--- a/lib/properties/webkitLineGrid.js
+++ b/lib/properties/webkitLineGrid.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-grid', v);
     },
diff --git a/lib/properties/webkitLineSnap.js b/lib/properties/webkitLineSnap.js
index 69c98ce..f74994d 100644
--- a/lib/properties/webkitLineSnap.js
+++ b/lib/properties/webkitLineSnap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-line-snap', v);
     },
diff --git a/lib/properties/webkitLocale.js b/lib/properties/webkitLocale.js
index cc47ee9..9b9bdb9 100644
--- a/lib/properties/webkitLocale.js
+++ b/lib/properties/webkitLocale.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-locale', v);
     },
diff --git a/lib/properties/webkitLogicalHeight.js b/lib/properties/webkitLogicalHeight.js
index 7eb5105..07612fb 100644
--- a/lib/properties/webkitLogicalHeight.js
+++ b/lib/properties/webkitLogicalHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-logical-height', v);
     },
diff --git a/lib/properties/webkitLogicalWidth.js b/lib/properties/webkitLogicalWidth.js
index 89dc9dd..ae8b66e 100644
--- a/lib/properties/webkitLogicalWidth.js
+++ b/lib/properties/webkitLogicalWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-logical-width', v);
     },
diff --git a/lib/properties/webkitMarginAfter.js b/lib/properties/webkitMarginAfter.js
index 1a9b7e7..0998d40 100644
--- a/lib/properties/webkitMarginAfter.js
+++ b/lib/properties/webkitMarginAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-after', v);
     },
diff --git a/lib/properties/webkitMarginAfterCollapse.js b/lib/properties/webkitMarginAfterCollapse.js
index 2bae70c..7a1cc65 100644
--- a/lib/properties/webkitMarginAfterCollapse.js
+++ b/lib/properties/webkitMarginAfterCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-after-collapse', v);
     },
diff --git a/lib/properties/webkitMarginBefore.js b/lib/properties/webkitMarginBefore.js
index 5248fc2..a0c58d9 100644
--- a/lib/properties/webkitMarginBefore.js
+++ b/lib/properties/webkitMarginBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-before', v);
     },
diff --git a/lib/properties/webkitMarginBeforeCollapse.js b/lib/properties/webkitMarginBeforeCollapse.js
index 017da7b..1543b9a 100644
--- a/lib/properties/webkitMarginBeforeCollapse.js
+++ b/lib/properties/webkitMarginBeforeCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-before-collapse', v);
     },
diff --git a/lib/properties/webkitMarginBottomCollapse.js b/lib/properties/webkitMarginBottomCollapse.js
index 05a0ce2..52ecfdc 100644
--- a/lib/properties/webkitMarginBottomCollapse.js
+++ b/lib/properties/webkitMarginBottomCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-bottom-collapse', v);
     },
diff --git a/lib/properties/webkitMarginCollapse.js b/lib/properties/webkitMarginCollapse.js
index 3ee0ad4..63746b2 100644
--- a/lib/properties/webkitMarginCollapse.js
+++ b/lib/properties/webkitMarginCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-collapse', v);
     },
diff --git a/lib/properties/webkitMarginEnd.js b/lib/properties/webkitMarginEnd.js
index 639fa51..ecdbe50 100644
--- a/lib/properties/webkitMarginEnd.js
+++ b/lib/properties/webkitMarginEnd.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-end', v);
     },
diff --git a/lib/properties/webkitMarginStart.js b/lib/properties/webkitMarginStart.js
index 7aa23fa..c41f0c8 100644
--- a/lib/properties/webkitMarginStart.js
+++ b/lib/properties/webkitMarginStart.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-start', v);
     },
diff --git a/lib/properties/webkitMarginTopCollapse.js b/lib/properties/webkitMarginTopCollapse.js
index 1858213..b449c6c 100644
--- a/lib/properties/webkitMarginTopCollapse.js
+++ b/lib/properties/webkitMarginTopCollapse.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-margin-top-collapse', v);
     },
diff --git a/lib/properties/webkitMarquee.js b/lib/properties/webkitMarquee.js
index 0328f6b..f3b8d99 100644
--- a/lib/properties/webkitMarquee.js
+++ b/lib/properties/webkitMarquee.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee', v);
     },
diff --git a/lib/properties/webkitMarqueeDirection.js b/lib/properties/webkitMarqueeDirection.js
index a413c6b..e4bc02c 100644
--- a/lib/properties/webkitMarqueeDirection.js
+++ b/lib/properties/webkitMarqueeDirection.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee-direction', v);
     },
diff --git a/lib/properties/webkitMarqueeIncrement.js b/lib/properties/webkitMarqueeIncrement.js
index 57b501e..88ed40e 100644
--- a/lib/properties/webkitMarqueeIncrement.js
+++ b/lib/properties/webkitMarqueeIncrement.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee-increment', v);
     },
diff --git a/lib/properties/webkitMarqueeRepetition.js b/lib/properties/webkitMarqueeRepetition.js
index 93c89de..4d523bd 100644
--- a/lib/properties/webkitMarqueeRepetition.js
+++ b/lib/properties/webkitMarqueeRepetition.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee-repetition', v);
     },
diff --git a/lib/properties/webkitMarqueeSpeed.js b/lib/properties/webkitMarqueeSpeed.js
index 63aec22..026c7e2 100644
--- a/lib/properties/webkitMarqueeSpeed.js
+++ b/lib/properties/webkitMarqueeSpeed.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee-speed', v);
     },
diff --git a/lib/properties/webkitMarqueeStyle.js b/lib/properties/webkitMarqueeStyle.js
index 7e2a258..250fba7 100644
--- a/lib/properties/webkitMarqueeStyle.js
+++ b/lib/properties/webkitMarqueeStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-marquee-style', v);
     },
diff --git a/lib/properties/webkitMask.js b/lib/properties/webkitMask.js
index 26266f8..f020f10 100644
--- a/lib/properties/webkitMask.js
+++ b/lib/properties/webkitMask.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask', v);
     },
diff --git a/lib/properties/webkitMaskAttachment.js b/lib/properties/webkitMaskAttachment.js
index 29b5491..ca5de5e 100644
--- a/lib/properties/webkitMaskAttachment.js
+++ b/lib/properties/webkitMaskAttachment.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-attachment', v);
     },
diff --git a/lib/properties/webkitMaskBoxImage.js b/lib/properties/webkitMaskBoxImage.js
index fc24bc7..9ed6d65 100644
--- a/lib/properties/webkitMaskBoxImage.js
+++ b/lib/properties/webkitMaskBoxImage.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image', v);
     },
diff --git a/lib/properties/webkitMaskBoxImageOutset.js b/lib/properties/webkitMaskBoxImageOutset.js
index dc95bd2..e9174a3 100644
--- a/lib/properties/webkitMaskBoxImageOutset.js
+++ b/lib/properties/webkitMaskBoxImageOutset.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image-outset', v);
     },
diff --git a/lib/properties/webkitMaskBoxImageRepeat.js b/lib/properties/webkitMaskBoxImageRepeat.js
index b557b79..342e1b8 100644
--- a/lib/properties/webkitMaskBoxImageRepeat.js
+++ b/lib/properties/webkitMaskBoxImageRepeat.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image-repeat', v);
     },
diff --git a/lib/properties/webkitMaskBoxImageSlice.js b/lib/properties/webkitMaskBoxImageSlice.js
index 2408a40..3fe2b4c 100644
--- a/lib/properties/webkitMaskBoxImageSlice.js
+++ b/lib/properties/webkitMaskBoxImageSlice.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image-slice', v);
     },
diff --git a/lib/properties/webkitMaskBoxImageSource.js b/lib/properties/webkitMaskBoxImageSource.js
index 70a4540..73b4a7d 100644
--- a/lib/properties/webkitMaskBoxImageSource.js
+++ b/lib/properties/webkitMaskBoxImageSource.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image-source', v);
     },
diff --git a/lib/properties/webkitMaskBoxImageWidth.js b/lib/properties/webkitMaskBoxImageWidth.js
index a041d7e..2f26290 100644
--- a/lib/properties/webkitMaskBoxImageWidth.js
+++ b/lib/properties/webkitMaskBoxImageWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-box-image-width', v);
     },
diff --git a/lib/properties/webkitMaskClip.js b/lib/properties/webkitMaskClip.js
index 0eeeb8b..70f28e1 100644
--- a/lib/properties/webkitMaskClip.js
+++ b/lib/properties/webkitMaskClip.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-clip', v);
     },
diff --git a/lib/properties/webkitMaskComposite.js b/lib/properties/webkitMaskComposite.js
index af8e54c..ffb41a7 100644
--- a/lib/properties/webkitMaskComposite.js
+++ b/lib/properties/webkitMaskComposite.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-composite', v);
     },
diff --git a/lib/properties/webkitMaskImage.js b/lib/properties/webkitMaskImage.js
index e5206ba..51e8ce1 100644
--- a/lib/properties/webkitMaskImage.js
+++ b/lib/properties/webkitMaskImage.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-image', v);
     },
diff --git a/lib/properties/webkitMaskOrigin.js b/lib/properties/webkitMaskOrigin.js
index 9a4fbb8..387a5d8 100644
--- a/lib/properties/webkitMaskOrigin.js
+++ b/lib/properties/webkitMaskOrigin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-origin', v);
     },
diff --git a/lib/properties/webkitMaskPosition.js b/lib/properties/webkitMaskPosition.js
index 6ce2653..f0cfffb 100644
--- a/lib/properties/webkitMaskPosition.js
+++ b/lib/properties/webkitMaskPosition.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-position', v);
     },
diff --git a/lib/properties/webkitMaskPositionX.js b/lib/properties/webkitMaskPositionX.js
index e33d737..48f8b07 100644
--- a/lib/properties/webkitMaskPositionX.js
+++ b/lib/properties/webkitMaskPositionX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-position-x', v);
     },
diff --git a/lib/properties/webkitMaskPositionY.js b/lib/properties/webkitMaskPositionY.js
index 3b0e335..1351efe 100644
--- a/lib/properties/webkitMaskPositionY.js
+++ b/lib/properties/webkitMaskPositionY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-position-y', v);
     },
diff --git a/lib/properties/webkitMaskRepeat.js b/lib/properties/webkitMaskRepeat.js
index 26517dd..e2b84f4 100644
--- a/lib/properties/webkitMaskRepeat.js
+++ b/lib/properties/webkitMaskRepeat.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-repeat', v);
     },
diff --git a/lib/properties/webkitMaskRepeatX.js b/lib/properties/webkitMaskRepeatX.js
index 59b0968..864d9a1 100644
--- a/lib/properties/webkitMaskRepeatX.js
+++ b/lib/properties/webkitMaskRepeatX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-repeat-x', v);
     },
diff --git a/lib/properties/webkitMaskRepeatY.js b/lib/properties/webkitMaskRepeatY.js
index dc5d06c..b0202a8 100644
--- a/lib/properties/webkitMaskRepeatY.js
+++ b/lib/properties/webkitMaskRepeatY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-repeat-y', v);
     },
diff --git a/lib/properties/webkitMaskSize.js b/lib/properties/webkitMaskSize.js
index b204900..a14d1c6 100644
--- a/lib/properties/webkitMaskSize.js
+++ b/lib/properties/webkitMaskSize.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-mask-size', v);
     },
diff --git a/lib/properties/webkitMatchNearestMailBlockquoteColor.js b/lib/properties/webkitMatchNearestMailBlockquoteColor.js
index 31e3ffa..ea60c14 100644
--- a/lib/properties/webkitMatchNearestMailBlockquoteColor.js
+++ b/lib/properties/webkitMatchNearestMailBlockquoteColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-match-nearest-mail-blockquote-color', v);
+        this.setProperty('-webkit-match-nearest-mail-blockquote-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-match-nearest-mail-blockquote-color');
diff --git a/lib/properties/webkitMaxLogicalHeight.js b/lib/properties/webkitMaxLogicalHeight.js
index 1474162..5387015 100644
--- a/lib/properties/webkitMaxLogicalHeight.js
+++ b/lib/properties/webkitMaxLogicalHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-max-logical-height', v);
     },
diff --git a/lib/properties/webkitMaxLogicalWidth.js b/lib/properties/webkitMaxLogicalWidth.js
index 4223cf1..496cd1c 100644
--- a/lib/properties/webkitMaxLogicalWidth.js
+++ b/lib/properties/webkitMaxLogicalWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-max-logical-width', v);
     },
diff --git a/lib/properties/webkitMinLogicalHeight.js b/lib/properties/webkitMinLogicalHeight.js
index 36afbef..4769df9 100644
--- a/lib/properties/webkitMinLogicalHeight.js
+++ b/lib/properties/webkitMinLogicalHeight.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-min-logical-height', v);
     },
diff --git a/lib/properties/webkitMinLogicalWidth.js b/lib/properties/webkitMinLogicalWidth.js
index b5b6c9a..b2712fc 100644
--- a/lib/properties/webkitMinLogicalWidth.js
+++ b/lib/properties/webkitMinLogicalWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-min-logical-width', v);
     },
diff --git a/lib/properties/webkitNbspMode.js b/lib/properties/webkitNbspMode.js
index 8f814f5..e794562 100644
--- a/lib/properties/webkitNbspMode.js
+++ b/lib/properties/webkitNbspMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-nbsp-mode', v);
     },
diff --git a/lib/properties/webkitOverflowScrolling.js b/lib/properties/webkitOverflowScrolling.js
index 9aab87f..3f2d85c 100644
--- a/lib/properties/webkitOverflowScrolling.js
+++ b/lib/properties/webkitOverflowScrolling.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-overflow-scrolling', v);
     },
diff --git a/lib/properties/webkitPaddingAfter.js b/lib/properties/webkitPaddingAfter.js
index dc268f7..8184f78 100644
--- a/lib/properties/webkitPaddingAfter.js
+++ b/lib/properties/webkitPaddingAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-padding-after', v);
     },
diff --git a/lib/properties/webkitPaddingBefore.js b/lib/properties/webkitPaddingBefore.js
index 4c686bb..fc75db3 100644
--- a/lib/properties/webkitPaddingBefore.js
+++ b/lib/properties/webkitPaddingBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-padding-before', v);
     },
diff --git a/lib/properties/webkitPaddingEnd.js b/lib/properties/webkitPaddingEnd.js
index b4a4640..f337acb 100644
--- a/lib/properties/webkitPaddingEnd.js
+++ b/lib/properties/webkitPaddingEnd.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-padding-end', v);
     },
diff --git a/lib/properties/webkitPaddingStart.js b/lib/properties/webkitPaddingStart.js
index 77acaf3..53479c3 100644
--- a/lib/properties/webkitPaddingStart.js
+++ b/lib/properties/webkitPaddingStart.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-padding-start', v);
     },
diff --git a/lib/properties/webkitPerspective.js b/lib/properties/webkitPerspective.js
index ab4c28c..faf598b 100644
--- a/lib/properties/webkitPerspective.js
+++ b/lib/properties/webkitPerspective.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-perspective', v);
     },
diff --git a/lib/properties/webkitPerspectiveOrigin.js b/lib/properties/webkitPerspectiveOrigin.js
index e72e614..3700757 100644
--- a/lib/properties/webkitPerspectiveOrigin.js
+++ b/lib/properties/webkitPerspectiveOrigin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-perspective-origin', v);
     },
diff --git a/lib/properties/webkitPerspectiveOriginX.js b/lib/properties/webkitPerspectiveOriginX.js
index c4e30e2..3917d4b 100644
--- a/lib/properties/webkitPerspectiveOriginX.js
+++ b/lib/properties/webkitPerspectiveOriginX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-perspective-origin-x', v);
     },
diff --git a/lib/properties/webkitPerspectiveOriginY.js b/lib/properties/webkitPerspectiveOriginY.js
index 0aefab5..7a5d5f5 100644
--- a/lib/properties/webkitPerspectiveOriginY.js
+++ b/lib/properties/webkitPerspectiveOriginY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-perspective-origin-y', v);
     },
diff --git a/lib/properties/webkitPrintColorAdjust.js b/lib/properties/webkitPrintColorAdjust.js
index 6442f32..666f83f 100644
--- a/lib/properties/webkitPrintColorAdjust.js
+++ b/lib/properties/webkitPrintColorAdjust.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-print-color-adjust', v);
     },
diff --git a/lib/properties/webkitRegionBreakAfter.js b/lib/properties/webkitRegionBreakAfter.js
index 6ac309a..9c5096d 100644
--- a/lib/properties/webkitRegionBreakAfter.js
+++ b/lib/properties/webkitRegionBreakAfter.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-region-break-after', v);
     },
diff --git a/lib/properties/webkitRegionBreakBefore.js b/lib/properties/webkitRegionBreakBefore.js
index 10de4cb..fcb1540 100644
--- a/lib/properties/webkitRegionBreakBefore.js
+++ b/lib/properties/webkitRegionBreakBefore.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-region-break-before', v);
     },
diff --git a/lib/properties/webkitRegionBreakInside.js b/lib/properties/webkitRegionBreakInside.js
index 1dc694b..3cc3d3c 100644
--- a/lib/properties/webkitRegionBreakInside.js
+++ b/lib/properties/webkitRegionBreakInside.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-region-break-inside', v);
     },
diff --git a/lib/properties/webkitRegionOverflow.js b/lib/properties/webkitRegionOverflow.js
index 00384d1..b728367 100644
--- a/lib/properties/webkitRegionOverflow.js
+++ b/lib/properties/webkitRegionOverflow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-region-overflow', v);
     },
diff --git a/lib/properties/webkitRtlOrdering.js b/lib/properties/webkitRtlOrdering.js
index 7b54ffb..a8c3c47 100644
--- a/lib/properties/webkitRtlOrdering.js
+++ b/lib/properties/webkitRtlOrdering.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-rtl-ordering', v);
     },
diff --git a/lib/properties/webkitSvgShadow.js b/lib/properties/webkitSvgShadow.js
index 9c5cb24..12c377d 100644
--- a/lib/properties/webkitSvgShadow.js
+++ b/lib/properties/webkitSvgShadow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-svg-shadow', v);
     },
diff --git a/lib/properties/webkitTapHighlightColor.js b/lib/properties/webkitTapHighlightColor.js
index deaf87b..7a309cc 100644
--- a/lib/properties/webkitTapHighlightColor.js
+++ b/lib/properties/webkitTapHighlightColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-tap-highlight-color', v);
+        this.setProperty('-webkit-tap-highlight-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-tap-highlight-color');
diff --git a/lib/properties/webkitTextCombine.js b/lib/properties/webkitTextCombine.js
index 17bbe25..f629987 100644
--- a/lib/properties/webkitTextCombine.js
+++ b/lib/properties/webkitTextCombine.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-combine', v);
     },
diff --git a/lib/properties/webkitTextDecorationsInEffect.js b/lib/properties/webkitTextDecorationsInEffect.js
index 89d09d7..492bea6 100644
--- a/lib/properties/webkitTextDecorationsInEffect.js
+++ b/lib/properties/webkitTextDecorationsInEffect.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-decorations-in-effect', v);
     },
diff --git a/lib/properties/webkitTextEmphasis.js b/lib/properties/webkitTextEmphasis.js
index efd0f19..d863cce 100644
--- a/lib/properties/webkitTextEmphasis.js
+++ b/lib/properties/webkitTextEmphasis.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-emphasis', v);
     },
diff --git a/lib/properties/webkitTextEmphasisColor.js b/lib/properties/webkitTextEmphasisColor.js
index 4be1184..177849a 100644
--- a/lib/properties/webkitTextEmphasisColor.js
+++ b/lib/properties/webkitTextEmphasisColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-text-emphasis-color', v);
+        this.setProperty('-webkit-text-emphasis-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-text-emphasis-color');
diff --git a/lib/properties/webkitTextEmphasisPosition.js b/lib/properties/webkitTextEmphasisPosition.js
index be6d5df..43a92ff 100644
--- a/lib/properties/webkitTextEmphasisPosition.js
+++ b/lib/properties/webkitTextEmphasisPosition.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-emphasis-position', v);
     },
diff --git a/lib/properties/webkitTextEmphasisStyle.js b/lib/properties/webkitTextEmphasisStyle.js
index 45ca0fc..9748371 100644
--- a/lib/properties/webkitTextEmphasisStyle.js
+++ b/lib/properties/webkitTextEmphasisStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-emphasis-style', v);
     },
diff --git a/lib/properties/webkitTextFillColor.js b/lib/properties/webkitTextFillColor.js
index 4d39fa7..57b4e1c 100644
--- a/lib/properties/webkitTextFillColor.js
+++ b/lib/properties/webkitTextFillColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-text-fill-color', v);
+        this.setProperty('-webkit-text-fill-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-text-fill-color');
diff --git a/lib/properties/webkitTextOrientation.js b/lib/properties/webkitTextOrientation.js
index 33d2233..374f511 100644
--- a/lib/properties/webkitTextOrientation.js
+++ b/lib/properties/webkitTextOrientation.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-orientation', v);
     },
diff --git a/lib/properties/webkitTextSecurity.js b/lib/properties/webkitTextSecurity.js
index 7fae7d0..064260b 100644
--- a/lib/properties/webkitTextSecurity.js
+++ b/lib/properties/webkitTextSecurity.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-security', v);
     },
diff --git a/lib/properties/webkitTextSizeAdjust.js b/lib/properties/webkitTextSizeAdjust.js
index 9bed069..205f19b 100644
--- a/lib/properties/webkitTextSizeAdjust.js
+++ b/lib/properties/webkitTextSizeAdjust.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-size-adjust', v);
     },
diff --git a/lib/properties/webkitTextStroke.js b/lib/properties/webkitTextStroke.js
index fee742e..3be028e 100644
--- a/lib/properties/webkitTextStroke.js
+++ b/lib/properties/webkitTextStroke.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-stroke', v);
     },
diff --git a/lib/properties/webkitTextStrokeColor.js b/lib/properties/webkitTextStrokeColor.js
index edd9828..3e9b1cf 100644
--- a/lib/properties/webkitTextStrokeColor.js
+++ b/lib/properties/webkitTextStrokeColor.js
@@ -1,8 +1,10 @@
 'use strict';
 
-module.exports = {
+var parseColor = require('../parsers').parseColor;
+
+module.exports.definition = {
     set: function (v) {
-        this.setProperty('-webkit-text-stroke-color', v);
+        this.setProperty('-webkit-text-stroke-color', parseColor(v));
     },
     get: function () {
         return this.getPropertyValue('-webkit-text-stroke-color');
diff --git a/lib/properties/webkitTextStrokeWidth.js b/lib/properties/webkitTextStrokeWidth.js
index f63983d..12f7c99 100644
--- a/lib/properties/webkitTextStrokeWidth.js
+++ b/lib/properties/webkitTextStrokeWidth.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-text-stroke-width', v);
     },
diff --git a/lib/properties/webkitTransform.js b/lib/properties/webkitTransform.js
index a8c3f1f..19ad5a9 100644
--- a/lib/properties/webkitTransform.js
+++ b/lib/properties/webkitTransform.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform', v);
     },
diff --git a/lib/properties/webkitTransformOrigin.js b/lib/properties/webkitTransformOrigin.js
index 1d2287f..19e67e0 100644
--- a/lib/properties/webkitTransformOrigin.js
+++ b/lib/properties/webkitTransformOrigin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform-origin', v);
     },
diff --git a/lib/properties/webkitTransformOriginX.js b/lib/properties/webkitTransformOriginX.js
index 2ec860d..7124507 100644
--- a/lib/properties/webkitTransformOriginX.js
+++ b/lib/properties/webkitTransformOriginX.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform-origin-x', v);
     },
diff --git a/lib/properties/webkitTransformOriginY.js b/lib/properties/webkitTransformOriginY.js
index e1f5f90..8995861 100644
--- a/lib/properties/webkitTransformOriginY.js
+++ b/lib/properties/webkitTransformOriginY.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform-origin-y', v);
     },
diff --git a/lib/properties/webkitTransformOriginZ.js b/lib/properties/webkitTransformOriginZ.js
index 2d465bb..190dc72 100644
--- a/lib/properties/webkitTransformOriginZ.js
+++ b/lib/properties/webkitTransformOriginZ.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform-origin-z', v);
     },
diff --git a/lib/properties/webkitTransformStyle.js b/lib/properties/webkitTransformStyle.js
index 3d41bac..a010819 100644
--- a/lib/properties/webkitTransformStyle.js
+++ b/lib/properties/webkitTransformStyle.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transform-style', v);
     },
diff --git a/lib/properties/webkitTransition.js b/lib/properties/webkitTransition.js
index f7bd0a0..ddae374 100644
--- a/lib/properties/webkitTransition.js
+++ b/lib/properties/webkitTransition.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transition', v);
     },
diff --git a/lib/properties/webkitTransitionDelay.js b/lib/properties/webkitTransitionDelay.js
index 24913a0..f728787 100644
--- a/lib/properties/webkitTransitionDelay.js
+++ b/lib/properties/webkitTransitionDelay.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transition-delay', v);
     },
diff --git a/lib/properties/webkitTransitionDuration.js b/lib/properties/webkitTransitionDuration.js
index 042200b..c5b5bd3 100644
--- a/lib/properties/webkitTransitionDuration.js
+++ b/lib/properties/webkitTransitionDuration.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transition-duration', v);
     },
diff --git a/lib/properties/webkitTransitionProperty.js b/lib/properties/webkitTransitionProperty.js
index 0bfa846..97b2ba9 100644
--- a/lib/properties/webkitTransitionProperty.js
+++ b/lib/properties/webkitTransitionProperty.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transition-property', v);
     },
diff --git a/lib/properties/webkitTransitionTimingFunction.js b/lib/properties/webkitTransitionTimingFunction.js
index d194872..fc32e34 100644
--- a/lib/properties/webkitTransitionTimingFunction.js
+++ b/lib/properties/webkitTransitionTimingFunction.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-transition-timing-function', v);
     },
diff --git a/lib/properties/webkitUserDrag.js b/lib/properties/webkitUserDrag.js
index ff84ba5..8885267 100644
--- a/lib/properties/webkitUserDrag.js
+++ b/lib/properties/webkitUserDrag.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-user-drag', v);
     },
diff --git a/lib/properties/webkitUserModify.js b/lib/properties/webkitUserModify.js
index efc8367..ff68fa1 100644
--- a/lib/properties/webkitUserModify.js
+++ b/lib/properties/webkitUserModify.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-user-modify', v);
     },
diff --git a/lib/properties/webkitUserSelect.js b/lib/properties/webkitUserSelect.js
index 8f63eea..a26b6bd 100644
--- a/lib/properties/webkitUserSelect.js
+++ b/lib/properties/webkitUserSelect.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-user-select', v);
     },
diff --git a/lib/properties/webkitWrap.js b/lib/properties/webkitWrap.js
index cda0d6c..d3eb1c6 100644
--- a/lib/properties/webkitWrap.js
+++ b/lib/properties/webkitWrap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap', v);
     },
diff --git a/lib/properties/webkitWrapFlow.js b/lib/properties/webkitWrapFlow.js
index 0724290..8ad4b75 100644
--- a/lib/properties/webkitWrapFlow.js
+++ b/lib/properties/webkitWrapFlow.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-flow', v);
     },
diff --git a/lib/properties/webkitWrapMargin.js b/lib/properties/webkitWrapMargin.js
index ed74ee2..be600f8 100644
--- a/lib/properties/webkitWrapMargin.js
+++ b/lib/properties/webkitWrapMargin.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-margin', v);
     },
diff --git a/lib/properties/webkitWrapPadding.js b/lib/properties/webkitWrapPadding.js
index d9cd6df..2b4ffbf 100644
--- a/lib/properties/webkitWrapPadding.js
+++ b/lib/properties/webkitWrapPadding.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-padding', v);
     },
diff --git a/lib/properties/webkitWrapShapeInside.js b/lib/properties/webkitWrapShapeInside.js
index 1b57fd3..1a8182a 100644
--- a/lib/properties/webkitWrapShapeInside.js
+++ b/lib/properties/webkitWrapShapeInside.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-shape-inside', v);
     },
diff --git a/lib/properties/webkitWrapShapeOutside.js b/lib/properties/webkitWrapShapeOutside.js
index a981d26..f0585fe 100644
--- a/lib/properties/webkitWrapShapeOutside.js
+++ b/lib/properties/webkitWrapShapeOutside.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-shape-outside', v);
     },
diff --git a/lib/properties/webkitWrapThrough.js b/lib/properties/webkitWrapThrough.js
index 912ed5c..541dc98 100644
--- a/lib/properties/webkitWrapThrough.js
+++ b/lib/properties/webkitWrapThrough.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-wrap-through', v);
     },
diff --git a/lib/properties/webkitWritingMode.js b/lib/properties/webkitWritingMode.js
index 9f7cc2f..eafa002 100644
--- a/lib/properties/webkitWritingMode.js
+++ b/lib/properties/webkitWritingMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('-webkit-writing-mode', v);
     },
diff --git a/lib/properties/whiteSpace.js b/lib/properties/whiteSpace.js
index e3abb82..957f106 100644
--- a/lib/properties/whiteSpace.js
+++ b/lib/properties/whiteSpace.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('white-space', v);
     },
diff --git a/lib/properties/widows.js b/lib/properties/widows.js
index eed4689..4bb799d 100644
--- a/lib/properties/widows.js
+++ b/lib/properties/widows.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('widows', v);
     },
diff --git a/lib/properties/width.js b/lib/properties/width.js
index 9016edc..7e25c1e 100644
--- a/lib/properties/width.js
+++ b/lib/properties/width.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('width', v);
     },
diff --git a/lib/properties/wordBreak.js b/lib/properties/wordBreak.js
index 0789b6d..847e1ea 100644
--- a/lib/properties/wordBreak.js
+++ b/lib/properties/wordBreak.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('word-break', v);
     },
diff --git a/lib/properties/wordSpacing.js b/lib/properties/wordSpacing.js
index a5f9837..0f0d9d2 100644
--- a/lib/properties/wordSpacing.js
+++ b/lib/properties/wordSpacing.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('word-spacing', v);
     },
diff --git a/lib/properties/wordWrap.js b/lib/properties/wordWrap.js
index 20ae48b..8fd65e4 100644
--- a/lib/properties/wordWrap.js
+++ b/lib/properties/wordWrap.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('word-wrap', v);
     },
diff --git a/lib/properties/writingMode.js b/lib/properties/writingMode.js
index a561e9f..7cacf07 100644
--- a/lib/properties/writingMode.js
+++ b/lib/properties/writingMode.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('writing-mode', v);
     },
diff --git a/lib/properties/zIndex.js b/lib/properties/zIndex.js
index a1db82d..715b8ff 100644
--- a/lib/properties/zIndex.js
+++ b/lib/properties/zIndex.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('z-index', v);
     },
diff --git a/lib/properties/zoom.js b/lib/properties/zoom.js
index 49ebdac..794acfe 100644
--- a/lib/properties/zoom.js
+++ b/lib/properties/zoom.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = {
+module.exports.definition = {
     set: function (v) {
         this.setProperty('zoom', v);
     },

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-cssstyle.git



More information about the Pkg-javascript-commits mailing list