diff --git a/include/grgsm/misc_utils/CMakeLists.txt b/include/grgsm/misc_utils/CMakeLists.txt
index 8b74fc7..a7b9d67 100644
--- a/include/grgsm/misc_utils/CMakeLists.txt
+++ b/include/grgsm/misc_utils/CMakeLists.txt
@@ -24,6 +24,8 @@
     bursts_printer.h
     burst_sink.h
     burst_source.h
+    message_file_sink.h
+    message_file_source.h
     burst_sink_qa.h
     burst_source_qa.h
     extract_system_info.h
diff --git a/include/grgsm/misc_utils/message_file_sink.h b/include/grgsm/misc_utils/message_file_sink.h
new file mode 100644
index 0000000..61a9c53
--- /dev/null
+++ b/include/grgsm/misc_utils/message_file_sink.h
@@ -0,0 +1,56 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef INCLUDED_GSM_MESSAGE_FILE_SINK_H
+#define INCLUDED_GSM_MESSAGE_FILE_SINK_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace gsm {
+
+    /*!
+     * \brief <+description of block+>
+     * \ingroup gsm
+     *
+     */
+    class GSM_API message_file_sink : virtual public gr::block
+    {
+     public:
+      typedef boost::shared_ptr<message_file_sink> sptr;
+
+      /*!
+       * \brief Return a shared_ptr to a new instance of grgsm::message_file_sink.
+       *
+       * To avoid accidental use of raw pointers, grgsm::message_file_sink's
+       * constructor is in a private implementation
+       * class. grgsm::message_file_sink::make is the public interface for
+       * creating new instances.
+       */
+      static sptr make(const std::string &filename);
+    };
+  } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_MESSAGE_FILE_SINK_H */
+
diff --git a/include/grgsm/misc_utils/message_file_source.h b/include/grgsm/misc_utils/message_file_source.h
new file mode 100644
index 0000000..51d2525
--- /dev/null
+++ b/include/grgsm/misc_utils/message_file_source.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef INCLUDED_GSM_MESSAGE_FILE_SOURCE_H
+#define INCLUDED_GSM_MESSAGE_FILE_SOURCE_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace gsm {
+
+    /*!
+     * \brief <+description of block+>
+     * \ingroup gsm
+     *
+     */
+    class GSM_API message_file_source : virtual public gr::block
+    {
+     public:
+      typedef boost::shared_ptr<message_file_source> sptr;
+
+      /*!
+       * \brief Return a shared_ptr to a new instance of grgsm::message_file_source.
+       *
+       * To avoid accidental use of raw pointers, grgsm::message_file_source's
+       * constructor is in a private implementation
+       * class. grgsm::message_file_source::make is the public interface for
+       * creating new instances.
+       */
+      static sptr make(const std::string &filename);
+    };
+
+  } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_MESSAGE_FILE_SOURCE_H */
+
