diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..3acccc45e5811ebf742657af22123a95fe4f9a66
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,6 @@
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule "([^/]+)/([^/]+)/([^/]+)/([^/]+).(jpg|png)$" api.php?get=$4&$1=$2&season=$3 [B,NE,L]
+RewriteRule "([^/]+)/([^/]+)/([^/]+).(jpg|png)$" api.php?get=$3&$1=$2 [B,NE,L]
+
diff --git a/api.php b/api.php
index 82833e68bf7a84a9d7e0e73aadd63604e8be6e47..80c8f9428e3cf2732b2f45ec0b6e9509972662c4 100644
--- a/api.php
+++ b/api.php
@@ -62,6 +62,7 @@ if ($_GET['get'] == 'poster' && (!empty($_GET['show']) || !empty($_GET['movie'])
 	else
 		$poster = get_absolute_path('poster/'. cleanName($_GET['movie']).'.jpg');
 
+
 	if(!file_exists($poster)) {
 
 		if($_GET['show'] && $_GET['season'])
@@ -83,7 +84,8 @@ if ($_GET['get'] == 'poster' && (!empty($_GET['show']) || !empty($_GET['movie'])
 			header("HTTP/1.0 404 Not Found");
 			die;
 		}else{
-			$poster = 'img/no_poster.jpg';
+			//$poster = 'img/no_poster.jpg';
+			header("Location: ../../img/no_poster.jpg");
 		}
 	}
 
@@ -123,7 +125,8 @@ if ($_GET['get'] == 'fanart' && (!empty($_GET['show']) || !empty($_GET['movie'])
 			$img->setImageCompressionQuality(75);
 			$img->writeImage($fanart);
 		}else{
-			$fanart = 'img/no_fanart.jpg';
+			//$fanart = 'img/no_fanart.jpg';
+			header("Location: ../../img/no_fanart.jpg");
 		}
 	}
 
diff --git a/config.php-dist b/config.php-dist
index d316bb1e3414eec732d127c0ec28865f28aecc01..51c53a0c3ddc2e593e84fb5ef5970b49a63e3b41 100644
--- a/config.php-dist
+++ b/config.php-dist
@@ -12,9 +12,13 @@ $cp['path'] = '/';
 $cp['key'] = 'YOUR-COUCHPOTATO-KEY';
 $cp['ssl'] = false;
 
-$showsPath = '/mnt/storage/media/tv';
-$moviesPath = '/mnt/storage/media/movies';
+$showsPath = '/storage/media/tv';
+$moviesPath = '/storage/media/movies';
 
 $cacheTTL = 3600;
 
+$cdn['enabled'] = false;
+$cdn['host'] = 'cdn#.example.com';
+$cdn['count'] = 2;
+
 ?>
\ No newline at end of file
diff --git a/css/mediarack.css b/css/mediarack.css
index 3a72b0886969c105af291a8483e29f0ae6069d18..43cfea06e5ef2c4c2a5699a5d47280e5fea83d56 100644
--- a/css/mediarack.css
+++ b/css/mediarack.css
@@ -25,8 +25,8 @@ body {
 	height: 71px;
 }
 
-.showLogo, 
-.movieLogo {	
+img.showLogo, 
+img.movieLogo {	
 	display: block;
     margin-left: auto;
     margin-right: auto;
@@ -39,7 +39,8 @@ body {
 	height: 230px;
 }
 
-.thumbnail  img.showPoster {
+a.thumbnail  img.showPoster,
+a.thumbnail  img.moviePoster {
 	min-height: 220px;
 	height: 220px;
 }
diff --git a/index.php b/index.php
index 421260aa2d3f80903c03e4fc7c548e06214ba432..b95e701f80070058220608acff9b8e9f9422f743 100644
--- a/index.php
+++ b/index.php
@@ -1,3 +1,6 @@
+<?php
+include_once 'config.php';
+?>
 <!DOCTYPE html>
 <html lang="en">
   <head>
@@ -102,10 +105,11 @@
 
     </div> <!-- /container -->
 
-
-    <!-- Bootstrap core JavaScript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
+	<script>
+		var cdnEnabled = '<?php echo $cdn['enabled']; ?>';
+		var cdnHostPattern = '<?php echo $cdn['host']; ?>';
+		var cdnHostCount = <?php echo $cdn['count']; ?>;
+	</script>
     <script src="js/jquery-1.10.2.min.js"></script>
     <script src="js/bootstrap.min.js"></script>
 	<script src="js/jquery.jcarousel.min.js"></script>
diff --git a/js/mediarack.js b/js/mediarack.js
index 1813d666cab0a7f0a42c42d61127d4f3a179372d..ca754ca0faf3bd457db41e3c2bb2ed6a238157aa 100644
--- a/js/mediarack.js
+++ b/js/mediarack.js
@@ -1,3 +1,4 @@
+
 var showLimit = 5;
 var showOffset = 0;
 var loadShows = true;
@@ -58,9 +59,9 @@ function getLatest(type) {
 			$.each(data, function (key, ep) {
 				var ulLatestContainer = $("#latest"+type);
 				if(type == 'Shows') {
-					var liLatestItem =  $('<li><img src="api.php?get=poster&show='+escape(ep.show)+'" /><div class="epLabel">'+ep.show+'<br />'+ep.episode+'<br />'+ep.airdate+'</div></li>');
+					var liLatestItem =  $('<li><img src="'+cdn('show/'+escape(ep.show))+'/poster.jpg" /><div class="epLabel">'+ep.show+'<br />'+ep.episode+'<br />'+ep.airdate+'</div></li>');
 				}else{
-					var liLatestItem =  $('<li><img src="api.php?get=poster&movie='+escape(ep.movie)+'" /><div class="epLabel">'+ep.movie+'</div></li>');
+					var liLatestItem =  $('<li><img src="'+cdn('movie/'+escape(ep.movie))+'/poster.jpg" /><div class="epLabel">'+ep.movie+'</div></li>');
 				}
 				ulLatestContainer.append(liLatestItem);
 			});
@@ -120,10 +121,11 @@ function getShows() {
 			var i = 0;
 			$.each(data, function (key, show) {
 				var divShowContainer = $('<div class="show panel panel-default" data-showid="'+show.id+'" id="show_'+show.id+'"></div>');
-				var divShowHeader = $('<div class="showName panel-heading"><h2 class="panel-title text-center"><img class="showLogo lazy" style="min-height: 50px; height: 50px;" alt="'+show.name+'" data-original="api.php?get=logo&show='+escape(show.folder)+'" src="" /></h2></div>');
-				var divShowBody = $('<div class="panel-body lazy" data-original="api.php?get=fanart&show='+escape(show.folder)+'"></div>');
+				var divShowHeader = $('<div class="showName panel-heading"><h2 class="panel-title text-center"><img class="showLogo lazy" style="min-height: 50px; height: 50px;" alt="'+show.name+'" data-original="'+cdn('show/'+escape(show.folder)+'/logo.png')+'" src="" /></h2></div>');
+				var divShowBody = $('<div class="panel-body lazy" data-original="'+cdn('show/'+escape(show.folder)+'/fanart.jpg')+'"></div>');
+				divShowBody.css('background-image', 'url('+cdn('img/no_fanart.jpg'));
 				var divShowFooter =$('<div class="panel-footer">Seasons: , Episodes: </div>');
-				var divShowPoster = $('<div class="col-md-2 text-center"><a href="#" class="thumbnail"><img id="poster_'+show.id+'" class="showPoster lazy" data-original="api.php?get=poster&show='+escape(show.folder)+'" src="img/no_poster.jpg" /></a></div>');
+				var divShowPoster = $('<div class="col-md-2 text-center"><a href="#" class="thumbnail"><img id="poster_'+show.id+'" class="showPoster lazy" data-original="'+cdn('show/'+escape(show.folder)+'/poster.jpg')+'" src="'+cdn('img/no_poster.jpg')+'" /></a></div>');
 				var ulSeasons = $('<ul class="seasons col-md-10 list-group"></ul>');
 				$.each(show.seasons, function(key, season) {
 					var liSeason = $('<li class="season list-group-item" data-season="'+season.season+'"><strong>Season '+season.season+'</strong><span class="badge">'+season.count+'</span></li>');
@@ -131,10 +133,10 @@ function getShows() {
 						getEpisodes($(this).parent().parent().parent().data('showid'), $(this).data('season'));
 					});
 					liSeason.hover(function() {
-						$("#poster_"+show.id).error(function() {$(this).attr('src', 'api.php?get=poster&show='+escape(show.folder))});
-						$("#poster_"+show.id).attr('src', 'api.php?get=poster&show='+escape(show.folder)+'&season='+season.season);
+						$("#poster_"+show.id).error(function() {$(this).attr('src', cdn('show/'+escape(show.folder)+'/poster.jpg'))});
+						$("#poster_"+show.id).attr('src', cdn('show/'+escape(show.folder)+'/'+season.season+'/poster.jpg'));
 					}, function() {
-						$("#poster_"+show.id).attr('src', 'api.php?get=poster&show='+escape(show.folder));
+						$("#poster_"+show.id).attr('src', cdn('show/'+escape(show.folder)+'/poster.jpg'));
 					});
 					ulSeasons.append(liSeason);
 				});
@@ -166,9 +168,9 @@ function getShows() {
 				});
 				divShows.append(divShowContainer);
 				if(i < 5) {
-					divShowHeader.find("img.showLogo").attr('src', 'api.php?get=logo&show='+escape(show.folder)).removeClass('lazy');
-					divShowBody.css('background-image', 'url(api.php?get=fanart&show='+escape(show.folder)+')').removeClass('lazy');
-					divShowPoster.find("img.showPoster").attr('src', 'api.php?get=poster&show='+escape(show.folder)).removeClass('lazy');
+					divShowHeader.find("img.showLogo").attr('src', cdn('show/'+escape(show.folder)+'/logo.png')).removeClass('lazy');
+					divShowBody.css('background-image', 'url('+cdn('show/'+escape(show.folder)+'/fanart.jpg')+')').removeClass('lazy');
+					divShowPoster.find("img.showPoster").attr('src', cdn('show/'+escape(show.folder)+'/poster.jpg')).removeClass('lazy');
 				}
 				i++;
 			});
@@ -237,9 +239,10 @@ function getMovies() {
 			var i = 0;
 			$.each(data, function (key, movie) {
 				var divMovieContainer = $('<div class="movie panel panel-default" data-imdb="'+movie.imdb+'" id="movie_'+movie.imdb+'"></div>');
-				var divMovieHeader = $('<div class="movieName panel-heading"><h2 class="panel-title text-center"><img class="movieLogo lazy" alt="'+movie.title+'" data-original="api.php?get=logo&movie='+escape(movie.folder)+'" src="" /></h2></div>');
-				var divMovieBody = $('<div class="panel-body lazy" data-original="api.php?get=fanart&movie='+escape(movie.folder)+'"></div>');
-				var divMoviePoster = $('<div class="col-md-2 text-center"><a href="#" class="thumbnail"><img id="poster_'+movie.imdb+'" class="moviePoster lazy" data-original="api.php?get=poster&movie='+escape(movie.folder)+'" src="img/no_poster.jpg" /></a></div>');
+				var divMovieHeader = $('<div class="movieName panel-heading"><h2 class="panel-title text-center"><img class="movieLogo lazy" alt="'+movie.title+'" data-original="'+cdn('movie/'+escape(movie.folder)+'/logo.png')+'" src="" /></h2></div>');
+				var divMovieBody = $('<div class="panel-body lazy" data-original="'+cdn('movie/'+escape(movie.folder)+'/fanart.jpg')+'"></div>');
+				divMovieBody.css('background-image', 'url('+cdn('img/no_fanart.jpg'));
+				var divMoviePoster = $('<div class="col-md-2 text-center"><a href="#" class="thumbnail"><img id="poster_'+movie.imdb+'" class="moviePoster lazy" data-original="'+cdn('movie/'+escape(movie.folder)+'/poster.jpg')+'" src="'+cdn('img/no_poster.jpg')+'" /></a></div>');
 				var divMoviePlot = $('<div class="moviePlot col-md-10 panel panel-default"><div class="panel-heading">'+movie.tagline+'</div><div class="panel-body">'+movie.plot+'</div></div>');
 				var divMovieFooter =$('<div class="panel-footer text-right">IMDB Rating: '+movie.rating+'</div>');
 				divMovieContainer.append(divMovieHeader);
@@ -270,9 +273,9 @@ function getMovies() {
 				});
 				divMovies.append(divMovieContainer);
 				if(i < 5) {
-					divMovieHeader.find("img.movieLogo").attr('src', 'api.php?get=logo&movie='+escape(movie.folder)).removeClass('lazy');
-					divMovieBody.css('background-image', 'url(api.php?get=fanart&movie='+escape(movie.folder)).removeClass('lazy');
-					divMoviePoster.find("img.moviePoster").attr('src', 'api.php?get=poster&movie='+escape(movie.folder)).removeClass('lazy');
+					divMovieHeader.find("img.movieLogo").attr('src', cdn('movie/'+escape(movie.folder)+'/logo.png')).removeClass('lazy');
+					divMovieBody.css('background-image', 'url('+cdn('movie/'+escape(movie.folder)+'/fanart.jpg')+')').removeClass('lazy');
+					divMoviePoster.find("img.moviePoster").attr('src', cdn('movie/'+escape(movie.folder)+'/poster.jpg')).removeClass('lazy');
 				}
 				i++;
 			});
@@ -284,3 +287,12 @@ function getMovies() {
 		}
 	);
 }
+
+function cdn(img) {
+	if(cdnEnabled == true) {
+		var cdnHost = cdnHostPattern.replace('#',  Math.floor((Math.random()*cdnHostCount)));
+		var base = window.location.href.replace(/https?:\/\//i, "").split('#')[0];
+		var img = window.location.protocol+'//'+cdnHost+'/'+base+img
+	}
+	return img;
+}