diff --git a/src/initializeOnLinkClickScroll.ts b/src/LinkClickScrollHandler/initializeOnLinkClickScroll.ts
similarity index 75%
rename from src/initializeOnLinkClickScroll.ts
rename to src/LinkClickScrollHandler/initializeOnLinkClickScroll.ts
index 879ad20102445f6acd791a9ff5933d830fad13d8..d97b596b1be715572a9eac6d0a75c2f1bf86e701 100644
--- a/src/initializeOnLinkClickScroll.ts
+++ b/src/LinkClickScrollHandler/initializeOnLinkClickScroll.ts
@@ -1,6 +1,6 @@
-import {scrollToTarget} from './scrollToTarget';
-import {assert} from './assert';
-import {HashTarget} from './HashTarget';
+import {scrollToTarget} from '../scrollers/scrollToTarget';
+import {assert} from '../assert';
+import {HashTarget} from '../HashTarget';
 
 export function initializeOnLinkClickScroll(): void
 {
diff --git a/src/initializeOnLoadScroll.ts b/src/LoadScrollHandler/initializeOnLoadScroll.ts
similarity index 90%
rename from src/initializeOnLoadScroll.ts
rename to src/LoadScrollHandler/initializeOnLoadScroll.ts
index ac644d809adbaa2795fd314fffcdf2ffe7d639f0..fe1c3325ff44459c032f625ed6e58f4ea6b299d6 100644
--- a/src/initializeOnLoadScroll.ts
+++ b/src/LoadScrollHandler/initializeOnLoadScroll.ts
@@ -1,6 +1,6 @@
-import {scrollToTarget} from './scrollToTarget';
-import {HashTarget} from './HashTarget';
-import {assert} from './assert';
+import {scrollToTarget} from '../scrollers/scrollToTarget';
+import {HashTarget} from '../HashTarget';
+import {assert} from '../assert';
 
 /**
  * Scrolls smoothly to an element if there is a hash in the URL.
diff --git a/src/setupVelocity.d.ts b/src/easing/setupVelocity.d.ts
similarity index 100%
rename from src/setupVelocity.d.ts
rename to src/easing/setupVelocity.d.ts
diff --git a/src/setupVelocity.js b/src/easing/setupVelocity.js
similarity index 100%
rename from src/setupVelocity.js
rename to src/easing/setupVelocity.js
diff --git a/src/index.ts b/src/index.ts
index 367a6d3f0ba241c2632687f72756171a239fbadd..37b73afd27bc84aedd53595ed48318ac4bb4ab65 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,7 +1,7 @@
 import * as Velocity from 'velocity-animate';
-import setupVelocity from './setupVelocity';
-import {initializeOnLoadScroll} from './initializeOnLoadScroll';
-import {initializeOnLinkClickScroll} from './initializeOnLinkClickScroll';
+import setupVelocity from './easing/setupVelocity';
+import {initializeOnLoadScroll} from './LoadScrollHandler/initializeOnLoadScroll';
+import {initializeOnLinkClickScroll} from './LinkClickScrollHandler/initializeOnLinkClickScroll';
 
 export interface SmoothScrollOptions {
 	readonly scrollOnLoad?: boolean;
diff --git a/src/scrollToTarget.ts b/src/scrollers/scrollToTarget.ts
similarity index 76%
rename from src/scrollToTarget.ts
rename to src/scrollers/scrollToTarget.ts
index 598766f1ff73509ae26075e9c5d351c7be143e62..d9c9ffc7c5481c07442a836ea0559d6bc5c3c0a2 100644
--- a/src/scrollToTarget.ts
+++ b/src/scrollers/scrollToTarget.ts
@@ -1,6 +1,6 @@
 import * as Velocity from 'velocity-animate';
-import {HashTarget} from './HashTarget';
-import {EASE_IN_SKIP_OUT_EASING} from './setupVelocity';
+import {HashTarget} from '../HashTarget';
+import {EASE_IN_SKIP_OUT_EASING} from '../easing/setupVelocity';
 
 export function scrollToTarget(hashTarget: HashTarget): void
 {