diff --git a/src/middlewares/news/addNews.ts b/src/middlewares/news/addNews.ts
index fe27476ee292aadbe69d0f595901769d31184b42..7c8ef3c5b3059f564741fc7e9ca61eeeeed28714 100644
--- a/src/middlewares/news/addNews.ts
+++ b/src/middlewares/news/addNews.ts
@@ -2,44 +2,36 @@ import { NextFunction, Request, Response } from "express";
 
 import News from "../../models/NewsSchema";
 import { ValidationError } from "../utils/ValidationError";
+import { validateFields } from "../utils/validateFields";
 
-const addNews = () => {
-  return (req: Request, res: Response, next: NextFunction) => {
-    try {
-      const news = new News();
-
-      // Check required fields
-      const fields = [
-        { name: "title", required: true },
-        { name: "text", required: true },
-      ];
-      fields.forEach((field) => {
-        const value = req.body[field.name];
-        if (field.required && !value) {
-          res.status(400);
-          throw new ValidationError(400, `Field: {${field.name}} is required!`);
-        }
-        if (value) news.set(field.name, value);
-      });
-
-      news.publishedAt = new Date().toDateString();
-
-      news.save((err) => {
-        if (err) {
-          res.status(400);
-        } else {
-          res.status(201);
-          res.data.newsObject = news;
-        }
-        next();
-      });
-    } catch (error) {
-      if (error instanceof ValidationError) {
-        const { code, message } = error;
-        return res.status(code).send({ message });
-      }
-    }
-  };
+const fields = [
+  { name: "title", required: true },
+  { name: "text", required: true },
+];
+
+/**
+ * Create a New Article
+ */
+const addNews = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  const news = new News();
+
+  // Validate and set fields from request body
+  validateFields({ fields, reqBody: req.body });
+  fields.forEach((field) => {
+    const value = req.body[field.name];
+    if (value) news.set(field.name, req.body[field.name]);
+  });
+
+  news.publishedAt = new Date();
+
+  await news.save();
+
+  res.data.newsObject = news;
+  next();
 };
 
 export default addNews;
diff --git a/src/middlewares/news/deleteNews.ts b/src/middlewares/news/deleteNews.ts
index 4382737857e889728d7c15d6b7c6f3bea252494f..8e33524750d674162249b24b0f21cfa40d3d2b59 100644
--- a/src/middlewares/news/deleteNews.ts
+++ b/src/middlewares/news/deleteNews.ts
@@ -2,17 +2,14 @@ import { NextFunction, Request, Response } from "express";
 
 import News from "../../models/NewsSchema";
 
-const deleteNews = () => {
-  return (req: Request, res: Response, next: NextFunction) => {
-    News.findByIdAndDelete(req.params.id, (error, result) => {
-      if (!error) {
-        res.status(204);
-        res.json({});
-      } else {
-        console.warn(error);
-      }
-    });
-  };
+const deleteNews = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  await News.findByIdAndDelete(req.params.id).lean().exec();
+
+  res.status(204).send();
 };
 
 export default deleteNews;
diff --git a/src/middlewares/news/getNews.ts b/src/middlewares/news/getNews.ts
index f99829e7079f3135bb08fbe8dbeba024d18da538..e8b14899b06f609457f182ca8ede4846ed7357b4 100644
--- a/src/middlewares/news/getNews.ts
+++ b/src/middlewares/news/getNews.ts
@@ -2,18 +2,17 @@ import { NextFunction, Request, Response } from "express";
 
 import News from "../../models/NewsSchema";
 
-const getNews = () => {
-  return (req: Request, res: Response, next: NextFunction) => {
-    News.findById(req.params.id, (error, result) => {
-      if (!error) {
-        res.status(200);
-        res.data.newsObject = result;
-      } else {
-        console.warn(error);
-      }
-      next();
-    });
-  };
+/**
+ * Get one News with id = req.params.id
+ * and set res.data.newsObject
+ */
+const getNews = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  res.data.newsObject = await News.findById(req.params.id).lean().exec();
+  next();
 };
 
 export default getNews;
diff --git a/src/middlewares/news/getNewsList.ts b/src/middlewares/news/getNewsList.ts
index 3f26b9006288c96241e617735fed88dc7eafb6be..ae6bbefceb5c5c43637f09ad46fe3d14e8e9d45d 100644
--- a/src/middlewares/news/getNewsList.ts
+++ b/src/middlewares/news/getNewsList.ts
@@ -2,15 +2,17 @@ import { NextFunction, Request, Response } from "express";
 
 import News from "../../models/NewsSchema";
 
-const getNewsList = () => {
-  return (req: Request, res: Response, next: NextFunction) => {
-    News.find({}, (err, news) => {
-      if (!err) {
-        res.data.news = news;
-      }
-      next();
-    });
-  };
+/**
+ * Get all news and set res.data.news
+ *
+ */
+const getNewsList = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  res.data.news = await News.find();
+  next();
 };
 
 export default getNewsList;
diff --git a/src/middlewares/news/updateNews.ts b/src/middlewares/news/updateNews.ts
index 87aac3b72693ea22828e00c466a73a08fb3a8b20..baa113bf8ba57c9124634ce61ce1785083481541 100644
--- a/src/middlewares/news/updateNews.ts
+++ b/src/middlewares/news/updateNews.ts
@@ -1,29 +1,26 @@
 import News, { INews } from "../../models/NewsSchema";
 import { NextFunction, Request, Response } from "express";
 
-const updateNews = () => {
-  return (req: Request, res: Response, next: NextFunction) => {
-    let news = res.data.newsObject;
-    if (news) {
-      const updatedNews: Partial<INews> = req.body;
-      if (updatedNews.title) {
-        news.title = updatedNews.title;
-      }
+// Valid fields to update
+const validFields = ["title", "text"];
 
-      if (updatedNews.text) {
-        news.text = updatedNews.text;
-      }
+const updateNews = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  const news = await News.findById(req.params.id).exec();
 
-      news.save((err) => {
-        if (err) {
-        } else {
-          res.status(201);
-          res.data.newsObject = news;
-        }
-        next();
-      });
-    }
-  };
+  if (news) {
+    validFields.forEach((field) => {
+      const value = req.body[field];
+      if (value) news.set(field, value);
+    });
+    await news.save();
+  }
+  res.data.newsObject = news;
+
+  next();
 };
 
 export default updateNews;
diff --git a/src/middlewares/user/deleteUser.ts b/src/middlewares/user/deleteUser.ts
index f36252985f704e9ba209128942f16edcd70acb9d..76e732659bc3feb401c846509f9e5a35e77e56bb 100644
--- a/src/middlewares/user/deleteUser.ts
+++ b/src/middlewares/user/deleteUser.ts
@@ -11,7 +11,7 @@ const deleteUser = () => async (
   next: NextFunction
 ) => {
   await Profile.findByIdAndDelete(req.params.id);
-  next();
+  res.status(204).send();
 };
 
 export default deleteUser;
diff --git a/src/middlewares/user/updateUser.ts b/src/middlewares/user/updateUser.ts
index 29ef9816397d3b9e5fa2b9bf8a91602132548650..de64f0988570dbe8bd2da5464a0a1f3c8a0d4ccc 100644
--- a/src/middlewares/user/updateUser.ts
+++ b/src/middlewares/user/updateUser.ts
@@ -20,7 +20,7 @@ const updateUser = () => async (
       const value = req.body[field];
       if (value) profile.set(field, value);
     });
-    profile.save();
+    await profile.save();
   }
   res.data.profile = profile;
 
diff --git a/src/models/NewsSchema.ts b/src/models/NewsSchema.ts
index 5d0ad367199a7cf2a4ef67bc6e3775835019475d..e82064d5e6817af472547b8b25a518b3bf285f5f 100644
--- a/src/models/NewsSchema.ts
+++ b/src/models/NewsSchema.ts
@@ -3,29 +3,13 @@ import { Document, Schema, model } from "mongoose";
 export interface INews extends Document {
   title: string;
   text: string;
-  /*    author : {
-       // id: IUser["_id"],
-        userName: string,
-    },
-    editedBy?: {
-       // id: IUser["_id"],
-        userName: string,
-    }, */
-  publishedAt: string;
+  publishedAt: Date;
 }
 
 const NewsSchema = new Schema({
   title: { type: String, required: true },
   text: { type: String, required: true },
-  /* author : {
-        id: { type: Schema.Types.ObjectId, required: true },
-        userName: { type: String, required: true }
-    },
-    editedBy: {
-        id: { type: Schema.Types.ObjectId, required: true },
-        userName: { type: String, required: true }
-    }, */
-  publishedAt: { type: String, required: true },
+  publishedAt: { type: Date, required: true },
 });
 
 export default model<INews>("News", NewsSchema);