diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/ShowQueueFragment.java b/app/src/main/java/ch/blinkenlights/android/vanilla/ShowQueueFragment.java
index 682d705c..b1e4a4ea 100644
--- a/app/src/main/java/ch/blinkenlights/android/vanilla/ShowQueueFragment.java
+++ b/app/src/main/java/ch/blinkenlights/android/vanilla/ShowQueueFragment.java
@@ -94,6 +94,8 @@ public class ShowQueueFragment extends Fragment
 	private final static int CTX_MENU_REMOVE          = 104;
 	private final static int CTX_MENU_SHOW_DETAILS    = 105;
 	private final static int CTX_MENU_ADD_TO_PLAYLIST = 106;
+	private final static int CTX_MENU_MOVE_TO_TOP     = 107;
+	private final static int CTX_MENU_MOVE_TO_BOTTOM  = 108;
 
 	/**
 	 * Called on long-click on a adapeter row
@@ -117,10 +119,14 @@ public class ShowQueueFragment extends Fragment
 		fm.add(CTX_MENU_ENQUEUE_ARTIST, 0, R.drawable.menu_enqueue, R.string.enqueue_current_artist).setIntent(intent);
 		fm.add(CTX_MENU_ENQUEUE_GENRE, 0, R.drawable.menu_enqueue, R.string.enqueue_current_genre).setIntent(intent);
 		fm.add(CTX_MENU_ADD_TO_PLAYLIST, 0, R.drawable.menu_add_to_playlist, R.string.add_to_playlist).setIntent(intent);
+		fm.addSpacer(0);
+		fm.add(CTX_MENU_MOVE_TO_TOP, 0, R.drawable.menu_move_to_top, R.string.move_to_top).setIntent(intent);
+		fm.add(CTX_MENU_MOVE_TO_BOTTOM, 0, R.drawable.menu_move_to_bottom, R.string.move_to_bottom).setIntent(intent);
 
 		fm.addSpacer(0);
 		fm.add(CTX_MENU_SHOW_DETAILS, 0, R.drawable.menu_details, R.string.details).setIntent(intent);
 		fm.add(CTX_MENU_REMOVE, 90, R.drawable.menu_remove, R.string.remove).setIntent(intent);
+
 		fm.show(view, x, y);
 		return true;
 	}
@@ -161,6 +167,12 @@ public class ShowQueueFragment extends Fragment
 				PlaylistDialog dialog = PlaylistDialog.newInstance(callback, intent, null);
 				dialog.show(getFragmentManager(), "PlaylistDialog");
 				break;
+			case CTX_MENU_MOVE_TO_TOP:
+				service.moveSongPosition(pos, 0);
+				break;
+			case CTX_MENU_MOVE_TO_BOTTOM:
+				service.moveSongPosition(pos, service.getTimelineLength() - 1);
+				break;
 			default:
 				throw new IllegalArgumentException("Unhandled menu id received!");
 				// we could actually dispatch this to the hosting activity, but we do not need this for now.
diff --git a/app/src/main/res/drawable-hdpi/menu_move_to_bottom.png b/app/src/main/res/drawable-hdpi/menu_move_to_bottom.png
new file mode 100644
index 00000000..b3df3721
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/menu_move_to_bottom.png differ
diff --git a/app/src/main/res/drawable-hdpi/menu_move_to_top.png b/app/src/main/res/drawable-hdpi/menu_move_to_top.png
new file mode 100644
index 00000000..993269d4
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/menu_move_to_top.png differ
diff --git a/app/src/main/res/drawable-mdpi/menu_move_to_bottom.png b/app/src/main/res/drawable-mdpi/menu_move_to_bottom.png
new file mode 100644
index 00000000..efb6b006
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/menu_move_to_bottom.png differ
diff --git a/app/src/main/res/drawable-mdpi/menu_move_to_top.png b/app/src/main/res/drawable-mdpi/menu_move_to_top.png
new file mode 100644
index 00000000..30184ee3
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/menu_move_to_top.png differ
diff --git a/app/src/main/res/drawable-xhdpi/menu_move_to_bottom.png b/app/src/main/res/drawable-xhdpi/menu_move_to_bottom.png
new file mode 100644
index 00000000..6e6c89a9
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/menu_move_to_bottom.png differ
diff --git a/app/src/main/res/drawable-xhdpi/menu_move_to_top.png b/app/src/main/res/drawable-xhdpi/menu_move_to_top.png
new file mode 100644
index 00000000..c7bc2c07
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/menu_move_to_top.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/menu_move_to_bottom.png b/app/src/main/res/drawable-xxhdpi/menu_move_to_bottom.png
new file mode 100644
index 00000000..f3f78b8d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/menu_move_to_bottom.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/menu_move_to_top.png b/app/src/main/res/drawable-xxhdpi/menu_move_to_top.png
new file mode 100644
index 00000000..b28de414
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/menu_move_to_top.png differ
diff --git a/app/src/main/res/values-de/translatable.xml b/app/src/main/res/values-de/translatable.xml
index 9c9aebf0..84a65b22 100644
--- a/app/src/main/res/values-de/translatable.xml
+++ b/app/src/main/res/values-de/translatable.xml
@@ -265,6 +265,8 @@
   <string name="toggle_controls">Steuerelemente ein-/ausblenden</string>
   <string name="seek_10s_backward">10 Sekunden zurück springen</string>
   <string name="seek_10s_forward">10 Sekunden vorwärts springen</string>
+  <string name="move_to_top">Nach oben schieben</string>
+  <string name="move_to_bottom">Nach unten schieben</string>
   <string name="preferences_action_show_queue">Warteschlange anzeigen</string>
   <string name="preferences_action_clear_queue">Warteschlange leeren</string>
   <string name="preferences_action_enqueue_current_album">Album einreihen</string>
diff --git a/app/src/main/res/values/translatable.xml b/app/src/main/res/values/translatable.xml
index 9e6be0ec..065f9a98 100644
--- a/app/src/main/res/values/translatable.xml
+++ b/app/src/main/res/values/translatable.xml
@@ -326,6 +326,8 @@ THE SOFTWARE.
 	<string name="toggle_controls">Toggle controls</string>
 	<string name="seek_10s_backward">Seek 10 seconds backward</string>
 	<string name="seek_10s_forward">Seek 10 seconds forward</string>
+	<string name="move_to_top">Move to top</string>
+	<string name="move_to_bottom">Move to bottom</string>
 	<string name="preferences_action_show_queue">Show queue</string>
 	<string name="preferences_action_clear_queue">Clear queue</string>
 	<string name="preferences_action_enqueue_current_album">Enqueue album</string>