diff --git a/src/App.vue b/src/App.vue
index cc012539252c37bf80617d500ee1a72a5205204a..39eeb97a8516b6f44de9b360447a2e1037a74266 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -27,9 +27,9 @@
 			<router-view />
 		</AppContent>
 		<Player />
-		<div class="floatControl">
+		<!-- <div class="floatControl">
 			Skip intro
-		</div>
+		</div> -->
 	</Content>
 </template>
 
diff --git a/src/components/Player.vue b/src/components/Player.vue
index a908923d6800e94367d0a4387fb46e7953aca5f8..6cf0660a1d3957a742106919d12a2bc36fdb71b0 100644
--- a/src/components/Player.vue
+++ b/src/components/Player.vue
@@ -53,12 +53,13 @@
 			<span>{{ secondsToHHMMSS(currentSeek) }} / {{ secondsToHHMMSS(getDuration) }}</span>
 			<input
 				type="range"
+				class="rangeStyle"
 				min="0"
 				:max="getDuration"
 				step=".5"
 				:value="currentSeek"
 				:disabled="!getSeek"
-				@input="changeTempSeek($event.target.value)"
+				@input="restyleInput(); changeTempSeek($event.target.value)"
 				@change="seekLocked = false; seekEpisode($event.target.value)">
 		</div>
 		<div class="volumeControls">
@@ -67,14 +68,14 @@
 				:class="getVolume == 0 ? 'volumeMute' : 'volumeFull'"
 				@click="toggleMute" />
 			<input
-				class="volume"
+				class="volume rangeStyle"
 				type="range"
 				name="volume"
 				min="0"
 				max="1"
 				step=".05"
 				:value="getVolume"
-				@input="setVolume($event.target.value)">
+				@input="restyleInput(); setVolume($event.target.value)">
 		</div>
 	</div>
 </template>
@@ -108,6 +109,14 @@ export default {
 			}
 		},
 	},
+	watch: {
+		getSeeky() {
+			this.restyleInput()
+		},
+	},
+	mounted() {
+		this.restyleInput()
+	},
 	methods: {
 		...mapActions([
 			'setVolume',
@@ -120,11 +129,22 @@ export default {
 			this.seekLocked = true
 			this.tmpSeek = value
 		},
-		secondsToHHMMSS(duration) {
-			let hhmmss = new Date(duration * 1000).toISOString().substr(11, 8)
+		secondsToHHMMSS(seconds) {
+			if (!seconds) {
+				seconds = 0
+			}
+			let hhmmss = new Date(seconds * 1000).toISOString().substr(11, 8)
 			hhmmss = hhmmss.replace(/^(00:)/, '')
 			return hhmmss
 		},
+		restyleInput() {
+			const element0 = document.getElementsByClassName('rangeStyle')[0]
+			let value = (element0.value - element0.min) / (element0.max - element0.min) * 100
+			element0.style.background = 'linear-gradient(to right, #fff 0%, #fff ' + value + '%, #70bbe4 ' + value + '%, #70bbe4 100%)'
+			const element1 = document.getElementsByClassName('rangeStyle')[1]
+			value = (element1.value - element1.min) / (element1.max - element1.min) * 100
+			element1.style.background = 'linear-gradient(to right, #fff 0%, #fff ' + value + '%, #70bbe4 ' + value + '%, #70bbe4 100%)'
+		},
 	},
 }
 </script>
@@ -255,34 +275,22 @@ export default {
 input[type=range] {
 	-webkit-appearance: none;
 	width: 100%;
-	background: transparent;
+	height: 5px;
+	min-height: 5px;
+	background: linear-gradient(to right, #fff 0%, #fff 50%, #70bbe4 50%, #70bbe4 100%);
+	border-radius: 3px;
+	outline: none;
 
 	&:focus {
 		outline: none;
 	}
 
-	&::-webkit-slider-runnable-track {
-		width: 100%;
-		height: 5px;
-		background: #3071a9;
-		border-radius: 3px;
-	}
-
-	&:focus::-webkit-slider-runnable-track {
-		background: #367ebd;
+	&::-moz-range-progress {
+		background: white;
 	}
 
 	&::-moz-range-track {
-		width: 100%;
-		height: 5px;
 		background: #70bbe4;
-		border-radius: 3px;
-	}
-
-	&::-moz-range-progress {
-		background: white;
-		height: 5px;
-		border-radius: 3px;
 	}
 
 	&::-webkit-slider-thumb {
@@ -292,16 +300,17 @@ input[type=range] {
 		width: 15px;
 		border-radius: 50%;
 		background: white;
-		margin-top: -5px;
 	}
 
 	&::-moz-range-thumb {
+		-webkit-appearance: none;
 		border: none;
 		height: 15px;
 		width: 15px;
 		border-radius: 50%;
 		background: white;
 	}
+
 }
 
 .volumeControls {
diff --git a/src/components/Table.vue b/src/components/Table.vue
index 4f240773159c53944069628ea93e8ef483eb2873..2ce6689f7b24bf783a77750d12ee7ca37a614024 100644
--- a/src/components/Table.vue
+++ b/src/components/Table.vue
@@ -193,7 +193,6 @@ export default {
 				.replaceAll('<li>', '')
 				.replaceAll('</ul>', ' ')
 				.replaceAll('</li>', '')
-			console.log(episodeDescription)
 			return episodeDescription
 		},
 		readableDate(datetime) {
diff --git a/src/services/Player.js b/src/services/Player.js
index df90d955ad6c4c5bc4ef45fa33c3aa6081093c8f..07bb607d1678eaba533c05ba1f9e76b4fc2b8428 100644
--- a/src/services/Player.js
+++ b/src/services/Player.js
@@ -27,7 +27,7 @@ let audioPlayer = null
 
 export class Player {
 
-	doPlay(src) {
+	load(src) {
 
 		if (audioPlayer !== null) {
 			audioPlayer.fade(store.getters.getVolume, 0, 500)
@@ -40,15 +40,20 @@ export class Player {
 			src,
 			html5: true,
 			volume: store.getters.getVolume,
+			onLoad() {
+				store.dispatch('setBuffering', true)
+			},
 			onplay() {
 				const duration = audioPlayer.duration()
 				store.dispatch('setPlaying', true)
 				store.dispatch('setBuffering', false)
+				store.dispatch('setPausing', false)
 				store.dispatch('setDuration', duration)
 
 			},
 			onpause() {
 				store.dispatch('setPlaying', false)
+				store.dispatch('setPausing', true)
 				store.dispatch('setBuffering', false)
 			},
 			onend() {
@@ -56,28 +61,20 @@ export class Player {
 			},
 		})
 		audioPlayer.unload()
-		audioPlayer.play()
-		audioPlayer.fade(0, store.getters.getVolume, 500)
 
 	}
 
-	updateSeek() {
-		const vm = this
-		setTimeout(function() {
-			if (audioPlayer !== null) {
-				const seek = audioPlayer.seek()
-				store.dispatch('setSeek', seek)
-				store.dispatch('storePlaybacktime', seek)
-				vm.updateSeek()
-			}
-		}, 1000)
+	play() {
+		audioPlayer.play()
+		audioPlayer.fade(0, store.getters.getVolume, 500)
+
 	}
 
-	doPause() {
+	pause() {
 		audioPlayer.pause()
 	}
 
-	doResume() {
+	resume() {
 		audioPlayer.play()
 	}
 
@@ -85,7 +82,7 @@ export class Player {
 		audioPlayer.seek(startTime)
 	}
 
-	setVolume(volume) {
+	volume(volume) {
 		if (audioPlayer !== null) {
 			audioPlayer.volume(volume)
 		}
@@ -95,4 +92,18 @@ export class Player {
 		return audioPlayer
 	}
 
+	updateSeek() {
+		const vm = this
+		setTimeout(function() {
+			if (audioPlayer !== null) {
+				if (audioPlayer.state() === 'loaded') {
+					const seek = audioPlayer.seek()
+					store.dispatch('setSeek', seek)
+					store.dispatch('storePlaybacktime', seek)
+				}
+				vm.updateSeek()
+			}
+		}, 1000)
+	}
+
 }
diff --git a/src/store/player.js b/src/store/player.js
index 03f442b0efcd8f621f71bdaebb64695165131922..05031ae970eed0d44c52c7969cf7aef181de3068 100644
--- a/src/store/player.js
+++ b/src/store/player.js
@@ -85,7 +85,7 @@ export default {
 		setVolume(state, volume) {
 			state.volume = volume
 			localStorage.setItem('podcast.volume', volume)
-			player.setVolume(state.volume)
+			player.volume(state.volume)
 		},
 		toggleMute(state) {
 			if (state.isMute) {
@@ -101,7 +101,7 @@ export default {
 				}
 			}
 			localStorage.setItem('podcast.volume', state.volume)
-			player.setVolume(state.volume)
+			player.volume(state.volume)
 		},
 		setTitle(state, title) {
 			state.title = title
@@ -172,30 +172,19 @@ export default {
 			if (episode.playtime) {
 				context.commit('setSeek', episode.playtime)
 			}
+			player.load(episode.enclosure)
 		},
 		playEpisode(context, episode) {
 			if (context.state.isPaused && episode.id === context.state.episodeId) {
-				context.commit('setPausing', false)
-				context.commit('setBuffering', true)
-				if (player.state()) {
-					player.doResume()
-				} else {
-					player.doPlay(episode.enclosure)
-				}
+				player.play()
 			} else {
 				context.dispatch('loadEpisode', episode)
 				context.dispatch('addEpisode', episode)
-				context.commit('setPlaying', true)
-				context.commit('setPausing', false)
-				context.commit('setBuffering', true)
-				player.doPlay(episode.enclosure)
+				player.play()
 			}
 		},
 		pauseEpisode(context) {
-			context.commit('setBuffering', false)
-			context.commit('setPlaying', false)
-			context.commit('setPausing', true)
-			player.doPause()
+			player.pause()
 		},
 
 		setSeek(context, startTime) {
@@ -207,15 +196,9 @@ export default {
 				return true
 			}
 			if (context.state.isPaused) {
-				context.commit('setPlaying', true)
-				context.commit('setBuffering', true)
-				context.commit('setPausing', false)
-				player.doResume()
+				player.play()
 			} else {
-				context.commit('setBuffering', false)
-				context.commit('setPausing', true)
-				context.commit('setPausing', true)
-				player.doPause()
+				player.pause()
 			}
 		},
 
@@ -227,6 +210,10 @@ export default {
 			context.commit('seekEpisode', startTime)
 		},
 
+		setPausing(context, state) {
+			context.commit('setPausing', state)
+		},
+
 		storePlaybacktime(context, position) {
 			const episodeId = context.state.episodeId
 			const episode = context.getters.episodeById(episodeId)