diff --git a/build/lib/CCSDS/__init__.py b/build/lib/CCSDS/__init__.py
deleted file mode 100644
index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000
--- a/build/lib/CCSDS/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/build/lib/CCSDS/ccsds.py b/build/lib/CCSDS/ccsds.py
deleted file mode 100644
index 4ff1945a1c12e9d2507747cef3df5d80788fc398..0000000000000000000000000000000000000000
--- a/build/lib/CCSDS/ccsds.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#! /usr/bin/env python3
-from bitstring import BitStream
-import spiceypy as spice
-from datetime import datetime, timedelta
-from rich.console import Console
-
-
-class PacketId:
-    def __init__(self,data):
-        pID = BitStream(hex=data).unpack('uint: 3, 2*bin: 1, bits: 11')
-        self.VersionNum = pID[0]
-        self.packetType = pID[1]
-        self.dataFieldHeaderFlag = pID[2]
-        self.Apid = pID[3].uint
-        self.Pid = pID[3][0:7].uint
-        self.Pcat = pID[3][7:].uint
-        pass
-    def serialize(self):
-        return [self.VersionNum, self.packetType, self.dataFieldHeaderFlag,
-                self.Apid, self.Pid, self.Pcat]
-
-class SeqControl:
-    def __init__(self,data):
-        sq = BitStream(hex=data).unpack('bin:2,uint:14')
-        self.SegmentationFlag = sq[0]
-        self.SSC = sq[1]
-
-    def serialize(self):
-        return [self.SegmentationFlag, self.SSC]
-
-class SourcePacketHeader:
-    def __init__(self,data):
-        # Read the Source Packet Header(48 bits)
-        # - Packet ID (16 bits)
-        self.packetId = PacketId(data[0:4])
-        # - Packet Sequence Control (16 bits)
-        self.sequeceControl = SeqControl(data[4:8])
-        """ 
-        - Packet Length (16 bits)
-        In the packet is stored Packet length is an unsigned word 
-        expressing “Number of octects contained in Packet Data Field” minus 1.
-        """
-        self.packetLength = BitStream(hex=data[8:12]).unpack('uint:16')[0]+1
-        # Based on BepiColombo SIMBIO-SYS
-        # ref: BC-SIM-GAF-IC-002 pag. 48
-    def serialize(self):
-        return [*self.packetId.serialize(), *self.sequeceControl.serialize(), self.packetLength]
-
-class DataFieldHeader:
-    def __init__(self,data,missionID,t0):
-        # Read The Data Field Header (80 bit)
-        dfhData = BitStream(hex=data).unpack('bin:1,uint:3,bin:4,3*uint:8,uint:1,uint:31,uint:16')
-        self.pusVersion = dfhData[1]
-        self.ServiceType = dfhData[3]
-        self.ServiceSubType = dfhData[4]
-        self.DestinationId = dfhData[5]
-        self.Synchronization = dfhData[6]
-        self.CorseTime = dfhData[7]
-        self.FineTime = dfhData[8]
-        self.SCET = "%s.%s" % (self.CorseTime, self.FineTime)
-        if self.Synchronization == 0:
-            self.UTCTime = self.scet2UTC(missionID,t0)
-        else:
-            self.UTCTime = '1970-01-01T00:00:00.00000Z'
-        pass
-
-    def serialize(self):
-        return [self.pusVersion, self.ServiceType, self.ServiceSubType,
-                self.DestinationId, self.SCET, self.UTCTime]
-
-    def scet2UTC(self,missionID,t0):
-        if t0 == None:
-            et = spice.scs2e(missionID, "{}.{}".format(self.CorseTime, self.FineTime))
-            ScTime = spice.et2utc(et, 'ISOC', 5)
-        else:
-            dateFormat = "%Y-%m-%dT%H:%M:%S.%f"
-            dt=datetime.strptime(t0,dateFormat)
-            sc = self.CorseTime + self.FineTime*(2**(-16))
-            f=dt+timedelta(seconds=sc)
-            ScTime=f.strftime(dateFormat)
-        return ScTime+'Z'
-
-class PackeDataField:
-    def __init__(self,data, missionID,t0):
-        # Data Field Header
-        self.DFHeader = DataFieldHeader(data[0:20],missionID,t0)
-        # Data
-        self.Data = data[20:]
-        pass  
-
-class CCSDS:
-    """ Reader for the CCSDS header """
-    def __init__(self, missionID, data,console:Console=None,t0= None):
-        if type(missionID) is str:
-            if missionID.lower() == 'bepicolombo':
-                missionID=-121
-            else:
-                if t0 == None:
-                    print("WARNING: the Mission name is not valid. time converte setted to 1970-01-01 00:00:00")
-                    t0 = "1970-01-01T00:00:00"
-        # Source Packet Header
-        self.SPH = SourcePacketHeader(data[0:12])
-        # Packet Data Field
-        self.PDF = PackeDataField(data[12:],missionID,t0)
-        self.APID = self.SPH.packetId.Apid
-        self.Service=self.PDF.DFHeader.ServiceType
-        self.subService=self.PDF.DFHeader.ServiceSubType
-        self.Data=self.PDF.Data
-
diff --git a/build/lib/PyCCSDS/__init__.py b/build/lib/PyCCSDS/__init__.py
deleted file mode 100644
index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000
--- a/build/lib/PyCCSDS/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/build/lib/PyCCSDS/ccsds.py b/build/lib/PyCCSDS/ccsds.py
deleted file mode 100644
index e91ac45009fb136d6bc46ac2bf88bb94de86f301..0000000000000000000000000000000000000000
--- a/build/lib/PyCCSDS/ccsds.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /usr/bin/env python3
-from bitstring import BitStream
-import spiceypy as spice
-from datetime import datetime, timedelta
-from rich.console import Console
-
-
-class PacketId:
-    def __init__(self,data):
-        pID = BitStream(hex=data).unpack('uint: 3, 2*bin: 1, bits: 11')
-        self.VersionNum = pID[0]
-        self.packetType = pID[1]
-        self.dataFieldHeaderFlag = pID[2]
-        self.Apid = pID[3].uint
-        self.Pid = pID[3][0:7].uint
-        self.Pcat = pID[3][7:].uint
-        pass
-    def serialize(self):
-        return [self.VersionNum, self.packetType, self.dataFieldHeaderFlag,
-                self.Apid, self.Pid, self.Pcat]
-
-class SeqControl:
-    def __init__(self,data):
-        sq = BitStream(hex=data).unpack('bin:2,uint:14')
-        self.SegmentationFlag = sq[0]
-        self.SSC = sq[1]
-
-    def serialize(self):
-        return [self.SegmentationFlag, self.SSC]
-
-class SourcePacketHeader:
-    def __init__(self,data):
-        # Read the Source Packet Header(48 bits)
-        # - Packet ID (16 bits)
-        self.packetId = PacketId(data[0:4])
-        # - Packet Sequence Control (16 bits)
-        self.sequeceControl = SeqControl(data[4:8])
-        """ 
-        - Packet Length (16 bits)
-        In the packet is stored Packet length is an unsigned word 
-        expressing “Number of octects contained in Packet Data Field” minus 1.
-        """
-        self.packetLength = BitStream(hex=data[8:12]).unpack('uint:16')[0]+1
-        # Based on BepiColombo SIMBIO-SYS
-        # ref: BC-SIM-GAF-IC-002 pag. 48
-    def serialize(self):
-        return [*self.packetId.serialize(), *self.sequeceControl.serialize(), self.packetLength]
-
-class DataFieldHeader:
-    def __init__(self,data,missionID,t0):
-        # Read The Data Field Header (80 bit)
-        dfhData = BitStream(hex=data).unpack('bin:1,uint:3,bin:4,3*uint:8,uint:1,uint:31,uint:16')
-        self.pusVersion = dfhData[1]
-        self.ServiceType = dfhData[3]
-        self.ServiceSubType = dfhData[4]
-        self.DestinationId = dfhData[5]
-        self.Synchronization = dfhData[6]
-        self.CorseTime = dfhData[7]
-        self.FineTime = dfhData[8]
-        self.SCET = "%s.%s" % (self.CorseTime, self.FineTime)
-        if self.Synchronization == 0:
-            self.UTCTime = self.scet2UTC(missionID,t0)
-        else:
-            self.UTCTime = '1970-01-01T00:00:00.00000Z'
-        pass
-
-    def serialize(self):
-        return [self.pusVersion, self.ServiceType, self.ServiceSubType,
-                self.DestinationId, self.SCET, self.UTCTime]
-
-    def scet2UTC(self,missionID,t0):
-        if t0 == None:
-            et = spice.scs2e(missionID, "{}.{}".format(self.CorseTime, self.FineTime))
-            ScTime = spice.et2utc(et, 'ISOC', 5)
-        else:
-            dateFormat = "%Y-%m-%dT%H:%M:%S.%f"
-            dt=datetime.strptime(t0,dateFormat)
-            sc = self.CorseTime + self.FineTime*(2**(-16))
-            f=dt+timedelta(seconds=sc)
-            ScTime=f.strftime(dateFormat)
-        return ScTime+'Z'
-
-class PackeDataField:
-    def __init__(self,data, missionID,t0):
-        # Data Field Header
-        self.DFHeader = DataFieldHeader(data[0:20],missionID,t0)
-        # Data
-        self.Data = data[20:]
-        pass  
-
-class CCSDS:
-    """ Reader for the CCSDS header """
-    def __init__(self, missionID, data,console:Console=None,t0= None):
-        if type(missionID) is str:
-            if missionID.lower() == 'bepicolombo':
-                missionID=-121
-            elif missionID.lower() == 'juice':
-                missionID=-29
-            else:
-                if t0 == None:
-                    print("WARNING: the Mission name is not valid. time converte setted to 1970-01-01 00:00:00")
-                    t0 = "1970-01-01T00:00:00"
-        # Source Packet Header
-        self.SPH = SourcePacketHeader(data[0:12])
-        # Packet Data Field
-        self.PDF = PackeDataField(data[12:],missionID,t0)
-        self.APID = self.SPH.packetId.Apid
-        self.Service=self.PDF.DFHeader.ServiceType
-        self.subService=self.PDF.DFHeader.ServiceSubType
-        self.Data=self.PDF.Data
-
diff --git a/dist/Python-CCSDS-0.1.0.tar.gz b/dist/Python-CCSDS-0.1.0.tar.gz
deleted file mode 100644
index 67049480a221d14c67932173914cadf83bef5398..0000000000000000000000000000000000000000
Binary files a/dist/Python-CCSDS-0.1.0.tar.gz and /dev/null differ
diff --git a/dist/Python_CCSDS-0.1.0-py3-none-any.whl b/dist/Python_CCSDS-0.1.0-py3-none-any.whl
deleted file mode 100644
index 1853dc3b56884390bdbb5d31e5a5a3227a5891ad..0000000000000000000000000000000000000000
Binary files a/dist/Python_CCSDS-0.1.0-py3-none-any.whl and /dev/null differ
diff --git a/pyproject.toml b/pyproject.toml
index 1eda487a55932fbdc21d0ef2323c2eeee7373aa7..ea49705782d8ad7081d46da4d0c353fb007393f0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,24 +1,19 @@
-[project]
+[tool.poetry]
 name = "Python-CCSDS"
 version = "0.1.0"
-dependencies = [
-    "rich",
-    "bitstring",
-    "spiceypy",
-    'importlib-metadata; python_version>"3.9"',
-]
-
-authors = [{name="Romolo Politi", email ="romolo.politi@gmail.com" }]
-license = {text = "GNU GPL ver3"}
-readme = "README.md"
 keywords =['python','ccsds','nasa','esa','packets']
 descriprion = 'Python library to read the CCSDS packets'
+authors = ["Romolo Politi <romolo.politi@inaf.it>"]
+license = "GNU GPL ver3"
+readme = "README.md"
 
-
-[project.optional-dependencies]
-docs = ["sphinx"]
+[tool.poetry.dependencies]
+python = "^3.12"
+rich = "^13.9.2"
+bitstring = "^4.2.3"
+spiceypy = "^6.0.0"
 
 
 [build-system]
-requires = ["setuptools"]
-build-backend = "setuptools.build_meta"
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"