diff --git a/src/main/scala/leon/codegen/CodeGenPhase.scala b/src/main/scala/leon/codegen/CodeGenPhase.scala
index bfd072b88b39650a60fcc14f2f3794e40a2f93d0..bdc717c1d37aaf69b3979652016e44cb2dca2572 100644
--- a/src/main/scala/leon/codegen/CodeGenPhase.scala
+++ b/src/main/scala/leon/codegen/CodeGenPhase.scala
@@ -19,6 +19,10 @@ object CodeGenPhase extends LeonPhase[Program,CompilationResult] {
 
     val cName = programToClassName(p)
 
+    for((p,cs) <- p.algebraicDataTypes) {
+      // val acf = new ClassFile(p....
+    } 
+
     val cf = new ClassFile(cName, None)
     cf.addDefaultConstructor
 
diff --git a/src/main/scala/leon/purescala/Definitions.scala b/src/main/scala/leon/purescala/Definitions.scala
index 969ef362c266e2c82bed2203509031ee2c86c4c8..186a858d68b55451817197b86aba27f7c4b9da2f 100644
--- a/src/main/scala/leon/purescala/Definitions.scala
+++ b/src/main/scala/leon/purescala/Definitions.scala
@@ -43,6 +43,7 @@ object Definitions {
     def definedFunctions = mainObject.definedFunctions
     def definedClasses = mainObject.definedClasses
     def classHierarchyRoots = mainObject.classHierarchyRoots
+    def algebraicDataTypes = mainObject.algebraicDataTypes
     def callGraph = mainObject.callGraph
     def calls(f1: FunDef, f2: FunDef) = mainObject.calls(f1, f2)
     def callers(f1: FunDef) = mainObject.callers(f1)
@@ -84,6 +85,10 @@ object Definitions {
 
     lazy val classHierarchyRoots : Seq[ClassTypeDef] = defs.filter(_.isInstanceOf[ClassTypeDef]).map(_.asInstanceOf[ClassTypeDef]).filter(!_.hasParent)
 
+    lazy val algebraicDataTypes : Map[AbstractClassDef,Seq[CaseClassDef]] = (defs.collect {
+      case c @ CaseClassDef(_, Some(_), _) => c
+    }).groupBy(_.parent.get)
+
     lazy val (callGraph, callers, callees) = {
       type CallGraph = Set[(FunDef,FunDef)]
 
diff --git a/src/test/resources/regression/codegen/purescala/Prog002.scala b/src/test/resources/regression/codegen/purescala/Prog002.scala
new file mode 100644
index 0000000000000000000000000000000000000000..496e9b6d1e040500f7fb5d0f5f115ba48b6ef13a
--- /dev/null
+++ b/src/test/resources/regression/codegen/purescala/Prog002.scala
@@ -0,0 +1,9 @@
+object Prog002 {
+  sealed abstract class List
+  case class Nil() extends List
+  case class Cons(head : Int, tail : List) extends List
+
+  def isNil(l : List) : Boolean = {
+    l == Nil()
+  }
+}