function branch (v1, v2, n, branchWidth, branchColor)
        
        % from snowflake fractal
        % changed to have two rotations instead of one
        phi = -120/180*pi;
        A1 = [cos(phi) -sin(phi);+sin(phi) cos(phi)];
        A2 = [cos(phi) sin(phi);-sin(phi) cos(phi)];
        vv = (v2-v1)./2;
        vrot1 = A1 * vv;
        vrot2 = A2 * vv;

        vx1 = v1 + (vrot1*.9);
        vx2 = v1 + (vrot2*.9);

        
        % Leaf Specifications
        greenLeafRadius = 2;
        redLeafRadius = 1.5;
        orangeLeafRadius = 1.5;
        orange = [1 0.5 0.2];

        
        % draw leaves
        % Chose leaves by manipulating center of the circles using the
        % four vectors in this function: v1, v2, vx1, vx2
        
        viscircles([vx2(2) vx1(2)],orangeLeafRadius, 'EdgeColor',orange);
        viscircles([vx2(1), vx1(2)],redLeafRadius, 'EdgeColor','r');
        viscircles([v1(1), vx1(2)],greenLeafRadius, 'EdgeColor','g');
       

        % If we have not reached the final level, keep drawing more
        % branches by recursively calling branch
        if (n-1) >= 0
                    
            
            % left branch
            line([v1(1) vx1(1)],[v1(2) vx1(2)], 'LineWidth', branchWidth, 'Color', branchColor); 
            hold on
            % right branch
            line([v1(1) vx2(1)],[v1(2) vx2(2)], 'LineWidth', branchWidth, 'Color', branchColor);
            hold on
            
            % recursively draw branches on left side
            branch(vx1,vx2, n-1, branchWidth, branchColor);
            % recursively draw branches on right side
            branch(vx2,vx1, n-1, branchWidth, branchColor);
                    
        end
end