diff --git a/src/components/sites/manageGroupExercisesSite/groupExercisesSite.tsx b/src/components/sites/manageGroupExercisesSite/groupExercisesSite.tsx
index 92aa8ab1fe9aecb32c46d99af457a7eed19de101..8c0f9db8a72532770cc77d19e5acfed837895175 100644
--- a/src/components/sites/manageGroupExercisesSite/groupExercisesSite.tsx
+++ b/src/components/sites/manageGroupExercisesSite/groupExercisesSite.tsx
@@ -89,7 +89,7 @@ class GroupExercisesSite extends React.Component<Props, any> {
   async componentWillMount(): Promise<void> {
 
     try {
-      await this.props.loadManageGroupExercisesSite()
+      await this.props.loadManageGroupExercisesSite(false)
     } catch (err) {
       ErrorHelper.makeServerErrorDialog(err, this.props.langId, 'Error', 'Could not load site data')
     }
diff --git a/src/components/sites/manageOwnExercisesSite/ownExercisesSite.tsx b/src/components/sites/manageOwnExercisesSite/ownExercisesSite.tsx
index dd3a6db5b9e47e3c5f0a3f7e9f73dbbbbac24d13..ed7373200e34ede272b30c9212a55e19dd9ca030 100644
--- a/src/components/sites/manageOwnExercisesSite/ownExercisesSite.tsx
+++ b/src/components/sites/manageOwnExercisesSite/ownExercisesSite.tsx
@@ -74,7 +74,7 @@ class OwnExercisesSite extends React.Component<Props, any> {
 
   async componentWillMount(): Promise<void> {
     try {
-        await this.props.loadOwnExercisesSite()
+        await this.props.loadOwnExercisesSite(false)
     } catch(err) {
       ErrorHelper.makeServerErrorDialog(err, this.props.langId, 'Error', 'Could not load site data')
     }
diff --git a/src/constants.ts b/src/constants.ts
index 283668023e20845a124661a1865ce5400c6f738e..927696fc6a5b96e975af9cbe1d6ffb1e3c5af031 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -13,7 +13,7 @@ import Logger from './helpers/logger'
  * y - breaking changes / new features
  * z - fixes, small changes
  */
-export const versionString = '2.9.15'
+export const versionString = '2.10.0'
 
 
 export const supportMail = 'yapex@informatik.uni-halle.de'
diff --git a/src/state/actions/exerciseEditorSite/exerciseEditorSiteActions.ts b/src/state/actions/exerciseEditorSite/exerciseEditorSiteActions.ts
index 915f6b7aa84c69c5cc0279d397161f748a81312f..3550f3fdb694da76134f3f831d0b8ee621d2c0c7 100644
--- a/src/state/actions/exerciseEditorSite/exerciseEditorSiteActions.ts
+++ b/src/state/actions/exerciseEditorSite/exerciseEditorSiteActions.ts
@@ -58,7 +58,7 @@ export function loadExerciseEditor(exerciseId: number | null, resetIds: boolean,
 
     await dispatch(getTestTypesAsync())
     await dispatch(getTagsAsync())
-    await dispatch(getGroupsForExercisesAsync())
+    await dispatch(getGroupsForExercisesAsync(true))
     await dispatch(getPLangsAsync())
 
     if (exerciseId !== null) {
diff --git a/src/state/actions/manageGroupExercisesSite/groupExercisesCrudSiteActions.ts b/src/state/actions/manageGroupExercisesSite/groupExercisesCrudSiteActions.ts
index 9c069f7fdcbd422310dc4dffca3ed987ff2ff357..27e16354fe0f0169ae0b3ba378a2eae9efc42447 100644
--- a/src/state/actions/manageGroupExercisesSite/groupExercisesCrudSiteActions.ts
+++ b/src/state/actions/manageGroupExercisesSite/groupExercisesCrudSiteActions.ts
@@ -68,9 +68,12 @@ export function _deleteGroupExercisesAsync(exerciseId: number, groupId: number):
 }
 
 
-export function getGroupsForExercisesAsync(): GET_groupsForExercisesAction {
+export function getGroupsForExercisesAsync(resetPaginationState: boolean): GET_groupsForExercisesAction {
   return {
     type: ActionType.GET_groupsForExercises,
-    payload: delay(getGroupsWithAccessibleExercises())
+    payload: delay(getGroupsWithAccessibleExercises()),
+    meta: {
+      resetPaginationState
+    }
   }
-}
\ No newline at end of file
+}
diff --git a/src/state/actions/manageGroupExercisesSite/groupExercisesSiteActions.ts b/src/state/actions/manageGroupExercisesSite/groupExercisesSiteActions.ts
index c2ff0333ae23e07d654a343842a15a2835049494..db60a03c502bb5f2af3ab89db0077330884963ba 100644
--- a/src/state/actions/manageGroupExercisesSite/groupExercisesSiteActions.ts
+++ b/src/state/actions/manageGroupExercisesSite/groupExercisesSiteActions.ts
@@ -38,17 +38,17 @@ export function setIsTagsFilterDisplayed(isTagsFilterDisplayed: boolean): SET_is
   }
 }
 
-export function loadManageGroupExercisesSite(): AwaitActions {
+export function loadManageGroupExercisesSite(resetPaginationState: boolean): AwaitActions {
   return async (dispatch, getState) => {
 
-    dispatch(resetManageGroupExercisesSite())
+    dispatch(resetManageGroupExercisesSite(resetPaginationState))
 
     // dispatch(resetTagsFilter()) //in most cases we go back from release and then we want to still have the filter
 
     await dispatch(loadManageTagsSite())
 
     //load the groups
-    await dispatch(getGroupsForExercisesAsync())
+    await dispatch(getGroupsForExercisesAsync(resetPaginationState))
 
     //the load for every group the exercises (paginated)
     const groups = getState().manageGroupExercisesState.groups
@@ -65,9 +65,10 @@ export function loadManageGroupExercisesSite(): AwaitActions {
   }
 }
 
-export function resetManageGroupExercisesSite(): ResetAction {
+export function resetManageGroupExercisesSite(resetPaginationState: boolean): ResetAction {
   return {
-    type: ActionType.RESET
+    type: ActionType.RESET,
+    resetPaginationState
   }
 }
 
diff --git a/src/state/actions/manageOwnExercisesSite/ownExercisesSiteActions.ts b/src/state/actions/manageOwnExercisesSite/ownExercisesSiteActions.ts
index d35e2e624f61aad6c6f8713e79fda50d60b44934..30eb297e3359f24b495163d51bd6edb069a43b3b 100644
--- a/src/state/actions/manageOwnExercisesSite/ownExercisesSiteActions.ts
+++ b/src/state/actions/manageOwnExercisesSite/ownExercisesSiteActions.ts
@@ -68,10 +68,10 @@ export function setIsTagsFilterDisplayed(isTagsFilterDisplayed: boolean): SET_is
   }
 }
 
-export function loadOwnExercisesSite(): AwaitActions {
+export function loadOwnExercisesSite(resetPaginationState: boolean): AwaitActions {
   return async (dispatch, getState) => {
 
-    dispatch(resetOwnExercisesSite())
+    dispatch(resetOwnExercisesSite(resetPaginationState))
 
     // dispatch(resetTagsFilter()) //in most cases we go back from release and then we want to still have the filter
 
@@ -81,9 +81,10 @@ export function loadOwnExercisesSite(): AwaitActions {
   }
 }
 
-export function resetOwnExercisesSite(): ResetAction {
+export function resetOwnExercisesSite(resetPaginationState: boolean): ResetAction {
   return {
-    type: ActionType.RESET
+    type: ActionType.RESET,
+    resetPaginationState
   }
 }
 
diff --git a/src/state/actions/ownOrGroupExerciseActions/releasesSiteActions/exerciseReleasesSiteActions.ts b/src/state/actions/ownOrGroupExerciseActions/releasesSiteActions/exerciseReleasesSiteActions.ts
index 3638fd44a3866f76640b524dac9c369b81db89d0..474a23a01273302b1a1ee292df164c2931a6b337 100644
--- a/src/state/actions/ownOrGroupExerciseActions/releasesSiteActions/exerciseReleasesSiteActions.ts
+++ b/src/state/actions/ownOrGroupExerciseActions/releasesSiteActions/exerciseReleasesSiteActions.ts
@@ -108,10 +108,10 @@ export function loadExerciseReleasesSite(exerciseId: number, comesFromOwnExercis
   }
 }
 
-export function resetExerciseReleasesSite(resetSiteLocalExercises: boolean): ResetAction {
+export function resetExerciseReleasesSite(resetPaginationState: boolean): ResetAction {
   return {
     type: ActionType.RESET,
-    resetSiteLocalExercises
+    resetPaginationState
   }
 }
 
diff --git a/src/state/reducers/allAccessibleExercises/closedExercisesSite/closedExercisesSiteReducer.ts b/src/state/reducers/allAccessibleExercises/closedExercisesSite/closedExercisesSiteReducer.ts
index 1cda48bcfa38122b2bbc7f303d5eccab9481c83e..f8d51f3c14d05ed77bfdf3838f2302c7ad596da0 100644
--- a/src/state/reducers/allAccessibleExercises/closedExercisesSite/closedExercisesSiteReducer.ts
+++ b/src/state/reducers/allAccessibleExercises/closedExercisesSite/closedExercisesSiteReducer.ts
@@ -40,7 +40,8 @@ export const initial: State = {
   closedExercisePreviewsViaCode: [],
   paginationViaCode: {
     ...getInitialPaginationData(),
-    orderByProp: 'displayName'
+    orderByProp: 'lastUpdatedAt',
+    isOrderByDesc: true
   },
   isLoadingViaCode: false,
 
diff --git a/src/state/reducers/allAccessibleExercises/openExercisesSite/openExercisesSiteReducer.ts b/src/state/reducers/allAccessibleExercises/openExercisesSite/openExercisesSiteReducer.ts
index f86192a5acd5e1b85dfd7185699679f2f2bddecd..be5bf2ec7e0e89f420bb1a08d12db513ba2a29c3 100644
--- a/src/state/reducers/allAccessibleExercises/openExercisesSite/openExercisesSiteReducer.ts
+++ b/src/state/reducers/allAccessibleExercises/openExercisesSite/openExercisesSiteReducer.ts
@@ -41,7 +41,8 @@ export const initial: State = {
   openExercisePreviewsViaCode: [],
   paginationViaCode: {
     ...getInitialPaginationData(),
-    orderByProp: 'displayName'
+    orderByProp: 'lastUpdatedAt',
+    isOrderByDesc: true
   },
   isLoadingViaCode: false,
   openExercisePreviewsViaVisibility: [],
diff --git a/src/state/reducers/manageGroupExercisesSite/getGroupsForExercisesCrudReducer.ts b/src/state/reducers/manageGroupExercisesSite/getGroupsForExercisesCrudReducer.ts
index 94811368d5f861736c04cee7eaab9a2fce41e4d4..e1f9cdcfa49ddf07c10078c1888aaea6b65950c7 100644
--- a/src/state/reducers/manageGroupExercisesSite/getGroupsForExercisesCrudReducer.ts
+++ b/src/state/reducers/manageGroupExercisesSite/getGroupsForExercisesCrudReducer.ts
@@ -8,31 +8,41 @@ import {getInitialPaginationData} from '../../../constants'
 import {FrontendSettingsManager, frontendSettings_syncDisplaySortingItems} from '../../../helpers/frontendSettingsManager'
 import {orderBy} from 'lodash-es'
 
+interface Meta {
+  /**
+   * really annoying if you go back and have to search/sort again...
+   */
+  readonly resetPaginationState: boolean
+}
 
 export interface GET_groupsForExercisesAction
-  extends ActionBase, ReduxPromiseAction<ReadonlyArray<UserGroupFromBackend>, GET_groupsForExercises_PENDINGAction, GET_groupsForExercises_FULFILLEDAction, GET_groupsForExercises_REJECTEDAction> {
+  extends ActionBase, ReduxPromiseAction<ReadonlyArray<UserGroupFromBackend>, GET_groupsForExercises_PENDINGAction, GET_groupsForExercises_FULFILLEDAction, GET_groupsForExercises_REJECTEDAction, Meta> {
   readonly type: ActionType.GET_groupsForExercises
   readonly payload: Promise<ReadonlyArray<UserGroupFromBackend>>
+  readonly meta: Meta
 }
 
 //automatically dispatched by redux promise middleware
 export interface GET_groupsForExercises_PENDINGAction
   extends ActionBase {
   readonly type: ActionType.GET_groupsForExercises_PENDING
+  readonly meta: Meta
 }
 
 //automatically dispatched by redux promise middleware
 export interface GET_groupsForExercises_FULFILLEDAction
-  extends ActionBase, ReduxPromiseFulfilledAction<ReadonlyArray<UserGroupFromBackend>> {
+  extends ActionBase, ReduxPromiseFulfilledAction<ReadonlyArray<UserGroupFromBackend>, Meta> {
   readonly type: ActionType.GET_groupsForExercises_FULFILLED
   readonly payload: ReadonlyArray<UserGroupFromBackend>
+  readonly meta: Meta
 }
 
 //automatically dispatched by redux promise middleware
 export interface GET_groupsForExercises_REJECTEDAction
-  extends ActionBase, ReduxPromiseRejectedAction<void> {
+  extends ActionBase, ReduxPromiseRejectedAction<void, Meta> {
   readonly type: ActionType.GET_groupsForExercises_REJECTED
   readonly payload: any
+  readonly meta: Meta
 }
 
 
@@ -88,6 +98,27 @@ export function reducer(state: State = initial, action: AllActions): State {
             pageSize = getInitialPaginationData().pageSize
           }
 
+          if (!action.meta.resetPaginationState) {
+
+            const oldGroupWithEx = state.groupExercises.find(x => p.id === x.userGroup.id)
+
+            if (oldGroupWithEx) {
+              return {
+                userGroup: p,
+                pagination: {
+                  ...getInitialPaginationData(),
+                  orderByProp: oldGroupWithEx.pagination.orderByProp,
+                  isOrderByDesc: oldGroupWithEx.pagination.isOrderByDesc,
+                  searchText: oldGroupWithEx.pagination.searchText,
+                  currentPage: oldGroupWithEx.pagination.currentPage,
+                  pageSize: pageSize
+                },
+                exercisePreviews: [] as any,
+                isLoading: true
+              }
+            }
+          }
+
           return {
             userGroup: p,
             pagination: {
diff --git a/src/state/reducers/manageGroupExercisesSite/groupExercisesSiteReducer.ts b/src/state/reducers/manageGroupExercisesSite/groupExercisesSiteReducer.ts
index 905240ce041cbcd1d2431c2028f6629892c36f36..686e1c4b57f3cb160cdd81777b5e3caf9ba7d52e 100644
--- a/src/state/reducers/manageGroupExercisesSite/groupExercisesSiteReducer.ts
+++ b/src/state/reducers/manageGroupExercisesSite/groupExercisesSiteReducer.ts
@@ -91,6 +91,10 @@ export interface SET_groupsOrderAction extends ActionBase {
 
 export interface ResetAction extends ActionBase {
   readonly type: ActionType.RESET
+  /**
+   * really annoying if you go back and have to search/sort again...
+   */
+  readonly resetPaginationState: boolean
 }
 
 export type AllActions =
@@ -230,12 +234,35 @@ export function reducer(state: State = initial, action: AllActions): State {
         )
       }
 
-    case ActionType.RESET:
-    case ActionTypeGlobal.RESET_Global:
+    case ActionTypeGlobal.RESET_Global: {
       return {
         ...initial,
         isTagsFilterDisplayed: FrontendSettingsManager.getFrontendSettings().groupExercisesSiteTagsFilterIsDisplayed,
       }
+    }
+    case ActionType.RESET: {
+
+      if (!action.resetPaginationState) {
+        return {
+          ...initial,
+          isTagsFilterDisplayed: FrontendSettingsManager.getFrontendSettings().groupExercisesSiteTagsFilterIsDisplayed,
+          groupExercises: state.groupExercises.map(value =>
+            ({
+              ...value,
+              pagination: {
+                ...value.pagination,
+              }
+            })
+          )
+        }
+      }
+
+      return {
+        ...initial,
+        isTagsFilterDisplayed: FrontendSettingsManager.getFrontendSettings().groupExercisesSiteTagsFilterIsDisplayed,
+      }
+    }
+
 
     default:
       notExhaustive(action)
diff --git a/src/state/reducers/manageOwnExercisesSite/ownExercisesSiteReducer.ts b/src/state/reducers/manageOwnExercisesSite/ownExercisesSiteReducer.ts
index b431e4c81efc47318a396a07226f656e78c1d0f3..9c49c3ce7fd3ac41890d2d6e8e46a82cc173749c 100644
--- a/src/state/reducers/manageOwnExercisesSite/ownExercisesSiteReducer.ts
+++ b/src/state/reducers/manageOwnExercisesSite/ownExercisesSiteReducer.ts
@@ -76,6 +76,10 @@ export interface SET_isTagsFilterDisplayedAction extends ActionBase {
 
 export interface ResetAction extends ActionBase {
   readonly type: ActionType.RESET
+  /**
+   * really annoying if you go back and have to search/sort again...
+   */
+  readonly resetPaginationState: boolean
 }
 
 export type AllActions =
@@ -161,8 +165,7 @@ export function reducer(state: State = initial, action: AllActions): State {
         }
       }
 
-    case ActionType.RESET:
-    case ActionTypeGlobal.RESET_Global:
+    case ActionTypeGlobal.RESET_Global: {
       return {
         ...initial,
         isTagsFilterDisplayed: FrontendSettingsManager.getFrontendSettings().ownExercisesSiteTagsFilterIsDisplayed,
@@ -171,6 +174,31 @@ export function reducer(state: State = initial, action: AllActions): State {
           pageSize: FrontendSettingsManager.getFrontendSettings().ownExercisesPageSize
         }
       }
+    }
+    case ActionType.RESET: {
+
+      if (!action.resetPaginationState) {
+        return {
+          ...initial,
+          sortByKey: state.sortByKey,
+          sortDirection: state.sortDirection,
+
+          pagination: {
+            ...state.pagination
+          }
+        }
+      }
+
+      return {
+        ...initial,
+        isTagsFilterDisplayed: FrontendSettingsManager.getFrontendSettings().ownExercisesSiteTagsFilterIsDisplayed,
+        pagination: {
+          ...initial.pagination,
+          pageSize: FrontendSettingsManager.getFrontendSettings().ownExercisesPageSize
+        }
+      }
+    }
+
 
     default:
       notExhaustive(action)
diff --git a/src/state/reducers/ownOrGroupExerciseReducers/exerciseReleasesSite/releaseSiteReducer.ts b/src/state/reducers/ownOrGroupExerciseReducers/exerciseReleasesSite/releaseSiteReducer.ts
index 91072f5160009ac79e2caa72dcfacd4192510faa..3982e958c3828e3e728d680a1ea75a6869424d5d 100644
--- a/src/state/reducers/ownOrGroupExerciseReducers/exerciseReleasesSite/releaseSiteReducer.ts
+++ b/src/state/reducers/ownOrGroupExerciseReducers/exerciseReleasesSite/releaseSiteReducer.ts
@@ -132,7 +132,10 @@ export interface SET_isChangeDialogDisplayedAction extends ActionBase {
 
 export interface ResetAction extends ActionBase {
   readonly type: ActionType.RESET
-  readonly resetSiteLocalExercises: boolean
+  /**
+   * really annoying if you go back and have to search/sort again...
+   */
+  readonly resetPaginationState: boolean
 }
 
 export type AllActions =
@@ -248,8 +251,30 @@ export function reducer(state: State = initial, action: AllActions): State {
         }
       }
 
-    case ActionType.RESET:
-    case ActionTypeGlobal.RESET_Global:
+    case ActionTypeGlobal.RESET_Global: {
+      return {
+        ...initial,
+        pagination: {
+          ...initial.pagination,
+          pageSize: FrontendSettingsManager.getFrontendSettings().releasesViewPageSize
+        }
+      }
+    }
+    case ActionType.RESET: {
+
+      if (!action.resetPaginationState) {
+        return {
+          ...initial,
+          sortByKey: state.sortByKey,
+          sortDirection: state.sortDirection,
+
+          //...this might be bad if the server side changed (e.g. deleted/added exercises)
+          pagination: {
+            ...state.pagination
+          }
+        }
+      }
+
       return {
         ...initial,
         pagination: {
@@ -257,6 +282,9 @@ export function reducer(state: State = initial, action: AllActions): State {
           pageSize: FrontendSettingsManager.getFrontendSettings().releasesViewPageSize
         }
       }
+    }
+
+
 
     default:
       notExhaustive(action)