diff --git a/node_modules/@types/fabric/fabric-impl.d.ts b/node_modules/@types/fabric/fabric-impl.d.ts
index 9b2e307..6da58c3 100755
--- a/node_modules/@types/fabric/fabric-impl.d.ts
+++ b/node_modules/@types/fabric/fabric-impl.d.ts
@@ -1194,18 +1194,6 @@ interface IStaticCanvasOptions {
     svgViewportTransformation?: boolean | undefined;
 }
 
-export interface FreeDrawingBrush {
-    /**
-     * Can be any regular color value.
-     */
-    color: string;
-
-    /**
-     * Brush width measured in pixels.
-     */
-    width: number;
-}
-
 export interface StaticCanvas
     extends IObservable<StaticCanvas>,
         IStaticCanvasOptions,
@@ -1222,7 +1210,7 @@ export class StaticCanvas {
 
     _activeObject?: Object | Group | undefined;
 
-    freeDrawingBrush: FreeDrawingBrush;
+    freeDrawingBrush: BaseBrush;
 
     /**
      * Calculates canvas element offset relative to the document
@@ -1931,6 +1919,8 @@ interface ICanvasOptions extends IStaticCanvasOptions {
 export interface Canvas extends StaticCanvas {}
 export interface Canvas extends ICanvasOptions {}
 export class Canvas {
+    toCanvasElement(options?: IDataURLOptions): HTMLCanvasElement;
+
     /**
      * Constructor
      * @param element <canvas> element to initialize instance on
@@ -2043,9 +2033,8 @@ export class Canvas {
     getSelectionElement(): HTMLCanvasElement;
     /**
      * Returns currently active object
-     * @return {fabric.Object} active object
      */
-    getActiveObject(): Object;
+    getActiveObject(): null | Object;
     /**
      * Returns an array with the current selected objects
      * @return {fabric.Object} active object
@@ -3997,7 +3986,7 @@ interface IPathOptions extends IObjectOptions {
      */
     path?: Point[] | undefined;
 }
-export interface Path extends Object, IPathOptions {}
+export interface Path extends Object {}
 export class Path {
     /**
      * Constructor
@@ -4006,6 +3995,8 @@ export class Path {
      */
     constructor(path?: string | Point[], options?: IPathOptions);
 
+    path: Array<string>;
+
     pathOffset: Point;
 
     /**
@@ -5865,6 +5856,12 @@ export class PatternBrush extends PencilBrush {
     createPath(pathData: string): Path;
 }
 export class PencilBrush extends BaseBrush {
+    /**
+     * PencilBrush class
+     * @param fabric.Canvas canvas
+     */
+    constructor(canvas: fabric.Canvas);
+
     /**
      * Converts points to SVG path
      * @param points Array of points
@@ -5878,6 +5875,32 @@ export class PencilBrush extends BaseBrush {
     createPath(pathData: string): Path;
 }
 
+///////////////////////////////////////////////////////////////////////////////
+// Fabric controlsUtils Interface
+//////////////////////////////////////////////////////////////////////////////
+interface IControlsUtils {
+    scaleCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string;
+    skewCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string;
+    scaleSkewCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string;
+    rotationWithSnapping(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scalingEqually(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scalingX(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scalingY(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scalingYOrSkewingX(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scalingXOrSkewingY(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    changeWidth(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    skewHandlerX(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    skewHandlerY(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    dragHandler(eventData: Event, transform: Transform, x: number, y: number): boolean;
+    scaleOrSkewActionName(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string;
+    rotationStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string;
+    wrapWithFixedAnchor<T>(actionHandler: ((eventData: Event, transform: Transform, x: number, y: number) => T)): ((eventData: Event, transform: Transform, x: number, y: number) => T);
+    wrapWithFireEvent<T>(actionHandler: ((eventData: Event, transform: Transform, x: number, y: number) => T)): ((eventData: Event, transform: Transform, x: number, y: number) => T);
+    getLocalPoint(transform: Transform, originX: string, originY: string, x: number, y: number): fabric.Point;
+}
+
+export const controlsUtils: IControlsUtils;
+
 ///////////////////////////////////////////////////////////////////////////////
 // Fabric util Interface
 //////////////////////////////////////////////////////////////////////////////
@@ -6452,6 +6475,12 @@ interface IUtilMisc {
      */
     isTransparent(ctx: CanvasRenderingContext2D, x: number, y: number, tolerance: number): boolean;
 
+    /**
+     * Join path commands to go back to svg format
+     * @param pathData fabricJS parsed path commands
+     */
+    joinPath(pathData: Array<string>): string;
+
     /**
      * reset an object transform state to neutral. Top and left are not accounted for
      * @static
