diff --git a/filcnaplo/lib/database/init.dart b/filcnaplo/lib/database/init.dart
index 958c3c8..63f8078 100644
--- a/filcnaplo/lib/database/init.dart
+++ b/filcnaplo/lib/database/init.dart
@@ -16,7 +16,7 @@ const settingsDB = DatabaseStruct("settings", {
   "vibration_strength": int, "ab_weeks": int, "swap_ab_weeks": int,
   "notifications": int, "notifications_bitfield": int, "notification_poll_interval": int, // notifications
   "x_filc_id": String, "graph_class_avg": int, "presentation_mode": int, "bell_delay": int, "bell_delay_enabled": int,
-  "grade_opening_fun": int, "icon_pack": String, "premium_scopes": String, "premium_token": String, "last_account_id": String,
+  "grade_opening_fun": int, "icon_pack": String, "premium_scopes": String, "premium_token": String, "last_account_id": String, "renamed_subjects_enabled": int,
 });
 // DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING
 // YOU'VE BEEN WARNED!!!
@@ -27,6 +27,8 @@ const usersDB = DatabaseStruct("users", {
 const userDataDB = DatabaseStruct("user_data", {
   "id": String, "grades": String, "timetable": String, "exams": String, "homework": String, "messages": String, "notes": String,
   "events": String, "absences": String, "group_averages": String,
+  // renamed subjects // non kreta data
+  "renamed_subjects": String,
   // "subject_lesson_count": String, // non kreta data
   "last_seen_grade": int,
 });
@@ -67,6 +69,8 @@ Future<Database> initDB(DatabaseProvider database) async {
     await migrateDB(db, struct: userDataDB, defaultValues: {
       "grades": "[]", "timetable": "[]", "exams": "[]", "homework": "[]", "messages": "[]", "notes": "[]", "events": "[]", "absences": "[]",
       "group_averages": "[]",
+      // renamed subjects // non kreta data
+      "renamed_subjects": "{}",
       // "subject_lesson_count": "{}", // non kreta data
       "last_seen_grade": 0,
     });
diff --git a/filcnaplo/lib/database/query.dart b/filcnaplo/lib/database/query.dart
index 32b4264..2efec87 100644
--- a/filcnaplo/lib/database/query.dart
+++ b/filcnaplo/lib/database/query.dart
@@ -52,21 +52,21 @@ class UserDatabaseQuery {
 
   final Database db;
 
-  Future<List<Grade>> getGrades({required String userId}) async {
+  Future<List<Grade>> getGrades({required String userId, required Map<String, String> renamedSubjects}) async {
     List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
     if (userData.isEmpty) return [];
     String? gradesJson = userData.elementAt(0)["grades"] as String?;
     if (gradesJson == null) return [];
-    List<Grade> grades = (jsonDecode(gradesJson) as List).map((e) => Grade.fromJson(e)).toList();
+    List<Grade> grades = (jsonDecode(gradesJson) as List).map((e) => Grade.fromJson(e, renamedSubjects: renamedSubjects)).toList();
     return grades;
   }
 
-  Future<List<Lesson>> getLessons({required String userId}) async {
+  Future<List<Lesson>> getLessons({required String userId, required Map<String, String> renamedSubjects}) async {
     List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
     if (userData.isEmpty) return [];
     String? lessonsJson = userData.elementAt(0)["timetable"] as String?;
     if (lessonsJson == null) return [];
-    List<Lesson> lessons = (jsonDecode(lessonsJson) as List).map((e) => Lesson.fromJson(e)).toList();
+    List<Lesson> lessons = (jsonDecode(lessonsJson) as List).map((e) => Lesson.fromJson(e, renamedSubjects: renamedSubjects)).toList();
     return lessons;
   }
 
@@ -115,21 +115,21 @@ class UserDatabaseQuery {
     return events;
   }
 
-  Future<List<Absence>> getAbsences({required String userId}) async {
+  Future<List<Absence>> getAbsences({required String userId, required Map<String, String> renamedSubjects}) async {
     List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
     if (userData.isEmpty) return [];
     String? absencesJson = userData.elementAt(0)["absences"] as String?;
     if (absencesJson == null) return [];
-    List<Absence> absences = (jsonDecode(absencesJson) as List).map((e) => Absence.fromJson(e)).toList();
+    List<Absence> absences = (jsonDecode(absencesJson) as List).map((e) => Absence.fromJson(e, renamedSubjects: renamedSubjects)).toList();
     return absences;
   }
 
-  Future<List<GroupAverage>> getGroupAverages({required String userId}) async {
+  Future<List<GroupAverage>> getGroupAverages({required String userId, required Map<String, String> renamedSubjects}) async {
     List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
     if (userData.isEmpty) return [];
     String? groupAveragesJson = userData.elementAt(0)["group_averages"] as String?;
     if (groupAveragesJson == null) return [];
-    List<GroupAverage> groupAverages = (jsonDecode(groupAveragesJson) as List).map((e) => GroupAverage.fromJson(e)).toList();
+    List<GroupAverage> groupAverages = (jsonDecode(groupAveragesJson) as List).map((e) => GroupAverage.fromJson(e, renamedSubjects: renamedSubjects)).toList();
     return groupAverages;
   }
 
@@ -150,4 +150,12 @@ class UserDatabaseQuery {
     DateTime lastSeen = DateTime.fromMillisecondsSinceEpoch(lastSeenDate);
     return lastSeen;
   }
+
+  Future<Map<String, String>> renamedSubjects({required String userId}) async {
+    List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
+    if (userData.isEmpty) return {};
+    String? renamedSubjectsJson = userData.elementAt(0)["renamed_subjects"] as String?;
+    if (renamedSubjectsJson == null) return {};
+    return (jsonDecode(renamedSubjectsJson) as Map).map((key, value) => MapEntry(key.toString(), value.toString()));
+  }
 }
diff --git a/filcnaplo/lib/database/store.dart b/filcnaplo/lib/database/store.dart
index 1046e7e..e97c369 100644
--- a/filcnaplo/lib/database/store.dart
+++ b/filcnaplo/lib/database/store.dart
@@ -100,4 +100,9 @@ class UserDatabaseStore {
     int lastSeenDate = date.millisecondsSinceEpoch;
     await db.update("user_data", {"last_seen_grade": lastSeenDate}, where: "id = ?", whereArgs: [userId]);
   }
+
+  Future<void> storeRenamedSubjects(Map<String, String> subjects, {required String userId}) async {
+    String renamedSubjectsJson = jsonEncode(subjects);
+    await db.update("user_data", {"renamed_subjects": renamedSubjectsJson}, where: "id = ?", whereArgs: [userId]);
+  }
 }
diff --git a/filcnaplo/lib/models/settings.dart b/filcnaplo/lib/models/settings.dart
index b2ed265..66b8f2c 100644
--- a/filcnaplo/lib/models/settings.dart
+++ b/filcnaplo/lib/models/settings.dart
@@ -65,6 +65,7 @@ class SettingsProvider extends ChangeNotifier {
   List<String> _premiumScopes;
   String _premiumAccessToken;
   String _lastAccountId;
+  bool _renamedSubjectsEnabled;
 
   SettingsProvider({
     DatabaseProvider? database,
@@ -99,6 +100,7 @@ class SettingsProvider extends ChangeNotifier {
     required List<String> premiumScopes,
     required String premiumAccessToken,
     required String lastAccountId,
+    required bool renameSubjectsEnabled,
   })  : _database = database,
         _language = language,
         _startPage = startPage,
@@ -130,7 +132,8 @@ class SettingsProvider extends ChangeNotifier {
         _customHighlightColor = customHighlightColor,
         _premiumScopes = premiumScopes,
         _premiumAccessToken = premiumAccessToken,
-        _lastAccountId = lastAccountId;
+        _lastAccountId = lastAccountId,
+        _renamedSubjectsEnabled = renameSubjectsEnabled;
 
   factory SettingsProvider.fromMap(Map map, {required DatabaseProvider database}) {
     Map<String, Object?>? configMap;
@@ -180,6 +183,7 @@ class SettingsProvider extends ChangeNotifier {
       premiumScopes: jsonDecode(map["premium_scopes"]).cast<String>(),
       premiumAccessToken: map["premium_token"],
       lastAccountId: map["last_account_id"],
+      renameSubjectsEnabled: map["renamed_subjects_enabled"] == 1,
     );
   }
 
@@ -219,6 +223,7 @@ class SettingsProvider extends ChangeNotifier {
       "premium_scopes": jsonEncode(_premiumScopes),
       "premium_token": _premiumAccessToken,
       "last_account_id": _lastAccountId,
+      "renamed_subjects_enabled": _renamedSubjectsEnabled ? 1 : 0
     };
   }
 
@@ -262,6 +267,7 @@ class SettingsProvider extends ChangeNotifier {
       premiumScopes: [],
       premiumAccessToken: "",
       lastAccountId: "",
+      renameSubjectsEnabled: false,
     );
   }
 
@@ -297,6 +303,7 @@ class SettingsProvider extends ChangeNotifier {
   List<String> get premiumScopes => _premiumScopes;
   String get premiumAccessToken => _premiumAccessToken;
   String get lastAccountId => _lastAccountId;
+  bool get renamedSubjectsEnabled => _renamedSubjectsEnabled;
 
   Future<void> update({
     bool store = true,
@@ -331,6 +338,7 @@ class SettingsProvider extends ChangeNotifier {
     List<String>? premiumScopes,
     String? premiumAccessToken,
     String? lastAccountId,
+    bool? renamedSubjectsEnabled,
   }) async {
     if (language != null && language != _language) _language = language;
     if (startPage != null && startPage != _startPage) _startPage = startPage;
@@ -365,6 +373,7 @@ class SettingsProvider extends ChangeNotifier {
     if (premiumScopes != null && premiumScopes != _premiumScopes) _premiumScopes = premiumScopes;
     if (premiumAccessToken != null && premiumAccessToken != _premiumAccessToken) _premiumAccessToken = premiumAccessToken;
     if (lastAccountId != null && lastAccountId != _lastAccountId) _lastAccountId = lastAccountId;
+    if (renamedSubjectsEnabled != null && renamedSubjectsEnabled != _renamedSubjectsEnabled) _renamedSubjectsEnabled = renamedSubjectsEnabled;
 
     if (store) await _database?.store.storeSettings(this);
     notifyListeners();
diff --git a/filcnaplo/lib/ui/widgets/grade/grade_tile.dart b/filcnaplo/lib/ui/widgets/grade/grade_tile.dart
index 392a4ce..f338572 100644
--- a/filcnaplo/lib/ui/widgets/grade/grade_tile.dart
+++ b/filcnaplo/lib/ui/widgets/grade/grade_tile.dart
@@ -23,7 +23,7 @@ class GradeTile extends StatelessWidget {
     String subtitle;
     EdgeInsets leadingPadding = EdgeInsets.zero;
     bool isSubjectView = SubjectGradesContainer.of(context) != null;
-    String subjectName = grade.subject.name.capital();
+    String subjectName = grade.subject.renamedTo != null ? grade.subject.renamedTo! : grade.subject.name.capital();
     String modeDescription = grade.mode.description.capital();
     String description = grade.description.capital();
 
@@ -112,7 +112,7 @@ class GradeTile extends StatelessWidget {
                   title,
                   maxLines: 2,
                   overflow: TextOverflow.ellipsis,
-                  style: const TextStyle(fontWeight: FontWeight.w600),
+                  style: TextStyle(fontWeight: FontWeight.w600, fontStyle: grade.subject.renamedTo != null ? FontStyle.italic : null),
                 ),
           subtitle: subtitle != ""
               ? censored
diff --git a/filcnaplo/lib/ui/widgets/lesson/lesson_tile.dart b/filcnaplo/lib/ui/widgets/lesson/lesson_tile.dart
index 15049f1..7639271 100644
--- a/filcnaplo/lib/ui/widgets/lesson/lesson_tile.dart
+++ b/filcnaplo/lib/ui/widgets/lesson/lesson_tile.dart
@@ -133,14 +133,18 @@ class LessonTile extends StatelessWidget {
                   contentPadding: const EdgeInsets.symmetric(horizontal: 4.0),
                   shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
                   title: Text(
-                    !lesson.isEmpty ? lesson.subject.name.capital() : "empty".i18n,
+                    !lesson.isEmpty
+                        ? lesson.subject.renamedTo != null
+                            ? lesson.subject.renamedTo!
+                            : lesson.subject.name.capital()
+                        : "empty".i18n,
                     maxLines: 2,
                     overflow: TextOverflow.ellipsis,
                     style: TextStyle(
-                      fontWeight: FontWeight.w600,
-                      fontSize: 15.5,
-                      color: AppColors.of(context).text.withOpacity(!lesson.isEmpty ? 1.0 : 0.5),
-                    ),
+                        fontWeight: FontWeight.w600,
+                        fontSize: 15.5,
+                        color: AppColors.of(context).text.withOpacity(!lesson.isEmpty ? 1.0 : 0.5),
+                        fontStyle: lesson.subject.renamedTo != null ? FontStyle.italic : null),
                   ),
                   subtitle: description != ""
                       ? Text(