diff --git a/include/lsgrmFullLambdaScheduleSegmenter.h b/include/lsgrmFullLambdaScheduleSegmenter.h
new file mode 100644
index 0000000000000000000000000000000000000000..c33e36f8447e2caa594717638fd7e817713cf574
--- /dev/null
+++ b/include/lsgrmFullLambdaScheduleSegmenter.h
@@ -0,0 +1,33 @@
+#ifndef __LSRM_FLS_SEGMENTER_H
+#define __LSRM_FLS_SEGMENTER_H
+#include "lsgrmSegmenter.h"
+#include "grmFullLambdaScheduleSegmenter.h"
+
+namespace lsgrm
+{
+
+template<class TImage>
+class FullLambdaScheduleSegmenter : public Segmenter<grm::FullLambdaScheduleSegmenter<TImage> >
+{
+public:
+
+  /* Some convenient typedefs */
+  typedef grm::FullLambdaScheduleSegmenter<TImage> Superclass;
+  typedef typename Superclass::NodeType NodeType;
+  typedef typename Superclass::EdgeType EdgeType;
+  typedef typename Superclass::NodePointerType NodePointerType;
+
+
+  FullLambdaScheduleSegmenter(){};
+
+  void WriteSpecificAttributes(NodePointerType node, FILE * nodeStream);
+  void ReadSpecificAttributes(NodePointerType node, FILE * nodeStream);
+  long long unsigned int GetNodeMemory(NodePointerType &node);
+};
+
+} // end of namespace lsrm
+#include "lsgrmFullLambdaScheduleSegmenter.txx"
+#endif
+
+
+
diff --git a/include/lsgrmFullLambdaScheduleSegmenter.txx b/include/lsgrmFullLambdaScheduleSegmenter.txx
new file mode 100644
index 0000000000000000000000000000000000000000..b6218c18b988bdbf9dcc34a8e492921939d0b825
--- /dev/null
+++ b/include/lsgrmFullLambdaScheduleSegmenter.txx
@@ -0,0 +1,59 @@
+#ifndef __LSRM_FLS_SEGMENTER_TXX
+#define __LSRM_FLS_SEGMENTER_TXX
+#include <otbImageFileReader.h>
+#include <itkImageRegionIterator.h>
+
+namespace lsgrm
+{
+
+	template<class TImage>
+	void
+	FullLambdaScheduleSegmenter<TImage>::WriteSpecificAttributes(NodePointerType node, FILE * nodeStream)
+	{
+	  std::size_t bands = node->m_Means.size();
+	  fwrite(&(bands), sizeof(bands), 1, nodeStream);
+
+	  for(unsigned int b = 0; b < node->m_Means.size(); b++)
+	    {
+	    fwrite(&(node->m_Means[b]), sizeof(node->m_Means[b]), 1, nodeStream);
+	    }
+	}
+
+    template<class TImage>
+    void
+    FullLambdaScheduleSegmenter<TImage>::ReadSpecificAttributes(NodePointerType node, FILE * nodeStream)
+    {
+      std::size_t bands;
+      fread(&(bands), sizeof(bands), 1, nodeStream);
+      node->m_Means.assign(bands, 0);
+
+      for(unsigned int b = 0; b < bands; b++)
+        {
+        fread(&(node->m_Means[b]), sizeof(node->m_Means[b]), 1, nodeStream);
+        }
+    }
+
+    template<class TImage>
+    long long unsigned int
+    FullLambdaScheduleSegmenter<TImage>::GetNodeMemory(NodePointerType &node)
+    {
+
+      unsigned int nBands = node->m_Means.size(); //this->m_InputImage->GetNumberOfComponentsPerPixel();
+
+      long long unsigned int memory = 0;
+      memory += sizeof(NodePointerType);    // size of the node pointer
+      memory += sizeof(NodeType);           // size of the node (actually, size of the base node)
+      memory += 1 * nBands * sizeof(float); // size of the 1 attribute, multiplied by the nb. of bands
+      memory += node->m_Edges.size() * sizeof(EdgeType);  // size of the edges
+      return memory;
+    }
+} // end of namespace lsrm
+
+#endif
+
+
+
+
+
+
+