diff --git a/setup.py b/setup.py
index 23e39cdf9c730703e6720b61df9fc5e14fbff6de..d6ebc46a385eb46e1b26c8614483ccad0444f2fd 100644
--- a/setup.py
+++ b/setup.py
@@ -10,6 +10,29 @@ import os
 import subprocess
 import re
 
+# Functions
+def readme():
+    """Opens readme file and returns content"""
+    with open("README.md") as file:
+        return file.read()
+
+def license():
+    """Opens license file and returns the content"""
+    with open("LICENSE.md") as file:
+        return file.read()
+
+def check_version(installed_binary_c_version, required_binary_c_version):
+    """Function to check the installed version and compare it to the required version"""
+    message = """
+    The binary_c version that is installed ({}) does not match the binary_c version ({}) 
+    that this release of the binary_c python module requires. 
+    """.format(installed_binary_c_version, required_binary_c_version)
+    assert installed_binary_c_version == required_binary_c_version, message
+
+###
+REQUIRED_BINARY_C_VERSION = '2.1.7'
+
+####
 GSL_DIR = os.getenv("GSL_DIR", None)
 if not GSL_DIR:
     print(
@@ -21,8 +44,6 @@ if not BINARY_C_DIR:
     print("Error: the BINARY_C environment variable is not set. Aborting setup")
     quit()
 
-
-
 # TODO: write code to know exact parent directory of this file.
 CWD = os.getcwd()
 
@@ -33,6 +54,15 @@ CWD = os.getcwd()
 # binary_c must be installed.
 BINARY_C_CONFIG = os.path.join(BINARY_C_DIR, "binary_c-config")
 
+BINARY_C_VERSION = (
+    subprocess.run(
+        [BINARY_C_CONFIG, "version"], stdout=subprocess.PIPE, check=True
+    )
+    .stdout.decode("utf-8")
+    .split()
+)
+check_version(BINARY_C_VERSION[0], REQUIRED_BINARY_C_VERSION)
+
 BINARY_C_INCDIRS = (
     subprocess.run(
         [BINARY_C_CONFIG, "incdirs_list"], stdout=subprocess.PIPE, check=True
@@ -146,17 +176,6 @@ BINARY_C_PYTHON_API_MODULE = Extension(
     language="C",
 )
 
-
-def readme():
-    """Opens readme file and returns content"""
-    with open("README.md") as file:
-        return file.read()
-
-def license():
-    """Opens license file and returns the content"""
-    with open("LICENSE.md") as file:
-        return file.read()
-
 ############################################################
 # Making the extension function
 ############################################################
@@ -164,8 +183,14 @@ def license():
 setup(
     name="binarycpython",
     version="0.2",
-    description="This is a python API for binary_c by David Hendriks, Rob Izzard and collaborators.\
-        Based on the initial set up by Jeff andrews",
+    description="""
+    This is a python API for binary_c (version {})by David Hendriks, Rob Izzard and collaborators.
+    Based on the initial set up by Jeff andrews. 
+    It is tested and designed to work for version {}, we can't guarantee proper functioning for other versions
+    
+    If you want to use a different version of binary_c, download and install a different version of this package
+    """.format(REQUIRED_BINARY_C_VERSION, REQUIRED_BINARY_C_VERSION),
+
     author="David Hendriks, Robert Izzard and Jeff Andrews",
     author_email="davidhendriks93@gmail.com/d.hendriks@surrey.ac.uk,\
         r.izzard@surrey.ac.uk/rob.izzard@gmail.com andrews@physics.uoc.gr",