diff --git a/Makefile b/Makefile
index 9d40cf0287500d9625478489852bcead9df24cff..368965e9c1aa83a5ad924b2ef61ef08cdec62408 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,14 @@ push:
 	@pnpm push
 
 clean:
+	rm -rf node_modules
+	rm -rf apps/web/node_modules
+	rm -rf libs/shared/node_modules
+	rm -rf libs/storybook/node_modules
+	rm -rf libs/config/node_modules
+	pnpm i
+
+cleanrm:
 	rm -rf pnpm-lock.yaml
 	rm -rf node_modules
 	rm -rf apps/web/node_modules
diff --git a/libs/shared/lib/components/buttons/index.tsx b/libs/shared/lib/components/buttons/index.tsx
index 2cfdfea12023db49f2889b4a9e7386721f7abb9c..38ea1a0c366475746561e049a3551bb2241da9ac 100644
--- a/libs/shared/lib/components/buttons/index.tsx
+++ b/libs/shared/lib/components/buttons/index.tsx
@@ -4,6 +4,7 @@ import Icon, { Sizes } from '../icon';
 import { forwardRef } from 'react';
 
 type ButtonProps = {
+  as?: 'button' | 'a' | 'div';
   type?: 'primary' | 'secondary' | 'danger';
   variant?: 'solid' | 'outline' | 'ghost';
   size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg';
@@ -11,18 +12,19 @@ type ButtonProps = {
   rounded?: boolean;
   disabled?: boolean;
   block?: boolean;
-  onClick: (e: any) => void;
+  onClick?: (e: any) => void;
+  href?: string;
   iconComponent?: React.ReactElement;
   iconPosition?: 'leading' | 'trailing';
   ariaLabel?: string;
   children?: React.ReactNode;
-  additionalClasses?: string;
-  notAButton?: boolean;
+  className?: string;
 };
 
-export const Button = React.forwardRef<HTMLButtonElement, ButtonProps & React.HTMLAttributes<HTMLButtonElement>>(
+export const Button = React.forwardRef<HTMLButtonElement | HTMLAnchorElement | HTMLDivElement, ButtonProps>(
   (
     {
+      as = 'button',
       type = 'secondary',
       variant = 'solid',
       label,
@@ -30,16 +32,16 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps & React.HT
       rounded = false,
       disabled = false,
       onClick,
+      href,
       block = false,
       iconComponent,
       iconPosition = 'leading',
       ariaLabel,
-      additionalClasses,
+      className,
       children,
-      notAButton,
       ...props
     },
-    forwardRef,
+    forwardedRef,
   ) => {
     let typeClass = useMemo(() => {
       switch (type) {
@@ -114,30 +116,25 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps & React.HT
       [iconComponent, label, children],
     );
 
-    additionalClasses = (additionalClasses || '') + (props.className || '');
+    const ButtonComponent = as;
+
+    const isAnchor = as === 'a';
 
-    if (notAButton)
-      return (
-        <div
-          className={`${styles.btn} ${typeClass} ${variantClass} ${sizeClass} ${blockClass} ${roundedClass} ${iconOnlyClass} ${additionalClasses}`}
-        >
-          {icon}
-        </div>
-      );
     return (
-      <button
+      <ButtonComponent
+        className={`${styles.btn} ${typeClass} ${variantClass} ${sizeClass} ${blockClass} ${roundedClass} ${iconOnlyClass} ${className}`}
         onClick={onClick}
         disabled={disabled}
         aria-label={ariaLabel}
-        ref={forwardRef}
+        href={isAnchor ? href : undefined}
+        ref={forwardedRef as React.RefObject<any>}
         {...props}
-        className={`${styles.btn} ${typeClass} ${variantClass} ${sizeClass} ${blockClass} ${roundedClass} ${iconOnlyClass} ${additionalClasses}`}
       >
         {iconPosition === 'leading' && icon}
         {label && <span>{label}</span>}
         {children && <span>{children}</span>}
         {iconPosition === 'trailing' && icon}
-      </button>
+      </ButtonComponent>
     );
   },
 );
diff --git a/libs/shared/lib/components/tooltip/tooltip.stories.tsx b/libs/shared/lib/components/tooltip/tooltip.stories.tsx
index 955eb37c764949e70ca75cbd6fad1b992715e915..1335dde4ae0813ee421cc0c2eddd7cab327708c5 100644
--- a/libs/shared/lib/components/tooltip/tooltip.stories.tsx
+++ b/libs/shared/lib/components/tooltip/tooltip.stories.tsx
@@ -25,7 +25,7 @@ const TooltipStory = (args: any) => {
       <div className="flex justify-center items-center py-16">
         <Tooltip {...args}>
           <TooltipTrigger>
-            <button className={'mx-auto'}>Hover over me</button>
+            <div className={'mx-auto'}>Hover over me</div>
           </TooltipTrigger>
           <TooltipContent side={args.side}>
             <p>This is a tooltip</p>
diff --git a/libs/shared/lib/querybuilder/panel/QueryBuilder.tsx b/libs/shared/lib/querybuilder/panel/QueryBuilder.tsx
index 6fca5ec417fcdfef7a84e607c004c03f2b18b6e1..5c3b9a459401e449d5e554015481ab31c2796669 100644
--- a/libs/shared/lib/querybuilder/panel/QueryBuilder.tsx
+++ b/libs/shared/lib/querybuilder/panel/QueryBuilder.tsx
@@ -499,7 +499,7 @@ export const QueryBuilderInner = (props: QueryBuilderProps) => {
                     variant="ghost"
                     size="xs"
                     iconComponent={<Settings />}
-                    additionalClasses="query-settings"
+                    className="query-settings"
                     onClick={(event) => {
                       event.stopPropagation();
                       if (toggleSettings === 'settings') setToggleSettings(undefined);
diff --git a/libs/shared/lib/querybuilder/pills/pilldropdown/PillDropdown.tsx b/libs/shared/lib/querybuilder/pills/pilldropdown/PillDropdown.tsx
index fae11e3ea55d054ca5937199a4d8c63e308c0839..d96f52f5ed44003bad181c092d53a2ac1d174b7e 100644
--- a/libs/shared/lib/querybuilder/pills/pilldropdown/PillDropdown.tsx
+++ b/libs/shared/lib/querybuilder/pills/pilldropdown/PillDropdown.tsx
@@ -106,7 +106,7 @@ export const PillDropdown = (props: PillDropdownProps) => {
                   key={(attribute.handleData.attributeName || '') + i}
                   iconComponent={attribute?.handleData?.attributeDimension ? IconMap[attribute.handleData.attributeDimension] : undefined}
                   iconPosition="trailing"
-                  additionalClasses={`w-full ${attributesOfInterest[i] ? 'bg-secondary-100' : 'bg-white'} justify-between rounded-none text-[0.7em]`}
+                  className={`w-full ${attributesOfInterest[i] ? 'bg-secondary-100' : 'bg-white'} justify-between rounded-none text-[0.7em]`}
                   variant="ghost"
                   size={'xs'}
                   label={attribute.handleData.attributeName}
diff --git a/libs/shared/lib/sidebar/index.tsx b/libs/shared/lib/sidebar/index.tsx
index aa1fb99bdbdbf71e9681f390579e69bfb90c5a34..8f92890cf5d537fc222169c66ffb2017c11678f1 100644
--- a/libs/shared/lib/sidebar/index.tsx
+++ b/libs/shared/lib/sidebar/index.tsx
@@ -35,7 +35,7 @@ export function Sidebar({ onTab, tab }: { onTab: (tab: SideNavTab) => void; tab:
                       onTab(t.name);
                     }
                   }}
-                  additionalClasses={tab === t.name ? 'bg-secondary-100' : ''}
+                  className={tab === t.name ? 'bg-secondary-100' : ''}
                 />
               </TooltipTrigger>
               <TooltipContent side={'right'}>{t.name}</TooltipContent>
diff --git a/libs/shared/lib/vis/components/bar.tsx b/libs/shared/lib/vis/components/bar.tsx
index 9cddc55943facfafafad1aa559aa1fd07769a763..269d25f5753df057a0edcc952180edf687bef741 100644
--- a/libs/shared/lib/vis/components/bar.tsx
+++ b/libs/shared/lib/vis/components/bar.tsx
@@ -39,7 +39,7 @@ export default function VisualizationBar({ manager, fullSize }: Props) {
             <TooltipProvider delayDuration={0}>
               <Tooltip>
                 <TooltipTrigger asChild>
-                  <Button type="secondary" variant="ghost" size="xs" iconComponent={<Add />} onClick={() => {}} />
+                  <Button as={'a'} type="secondary" variant="ghost" size="xs" iconComponent={<Add />} onClick={() => {}} />
                 </TooltipTrigger>
                 <TooltipContent side={'top'}>
                   <p>Add visualization</p>
diff --git a/libs/shared/lib/vis/components/config/panel.tsx b/libs/shared/lib/vis/components/config/panel.tsx
index 22adadfbb9357e3f8615fe528d0c4136d571cad4..5aae132cdf385752a62621daa7bbad0a194ae762 100644
--- a/libs/shared/lib/vis/components/config/panel.tsx
+++ b/libs/shared/lib/vis/components/config/panel.tsx
@@ -52,7 +52,7 @@ export function ConfigPanel({ manager }: Props) {
                 '_blank',
               )
             }
-            additionalClasses="block w-full"
+            className="block w-full"
           />
         </div>
       )}