diff --git a/comsoc/tieBreak.go b/comsoc/tieBreak.go
deleted file mode 100644
index eb0e525dc9835638b7ab6f17e926a03df65863e3..0000000000000000000000000000000000000000
--- a/comsoc/tieBreak.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package comsoc
-
-func TieBreakFactory([]Alternative) func([]Alternative) (Alternative, err error) {
-	
-}
diff --git a/comsoc/approval.go b/ia04/comsoc/approval.go
similarity index 100%
rename from comsoc/approval.go
rename to ia04/comsoc/approval.go
diff --git a/comsoc/borda.go b/ia04/comsoc/borda.go
similarity index 100%
rename from comsoc/borda.go
rename to ia04/comsoc/borda.go
diff --git a/comsoc/majority.go b/ia04/comsoc/majority.go
similarity index 100%
rename from comsoc/majority.go
rename to ia04/comsoc/majority.go
diff --git a/ia04/comsoc/tieBreak.go b/ia04/comsoc/tieBreak.go
new file mode 100644
index 0000000000000000000000000000000000000000..5fbe9eabe9be60abccd49c976248082a1967768b
--- /dev/null
+++ b/ia04/comsoc/tieBreak.go
@@ -0,0 +1,51 @@
+package comsoc
+
+import("errors")
+
+func TieBreakFactory(tieBreakAlts []Alternative) (func ([]Alternative) (Alternative, err error)) {
+  return func(alts []Alternative) (Alternative, err error) {
+    if len(alts) == 0 || alts == nil {
+      return -1, errors.New("002: NullAlternatives")
+    }
+
+    for _,alt := range(alts) {
+      for _,tieBreakAlt := range(tieBreakAlts) {
+        if alt == tieBreakAlt {
+          return alt, nil
+        }
+      }
+    }
+    return -1, errors.New("002: NoTieBreakAlternativeFound")
+  }
+}
+
+func SWFFactory(swf1 func (Profile) (Count, error), tieBreak func ([]Alternative) (Alternative, error)) (swf2 func(Profile) (alts []Alternative, err error)) {
+  return func(p Profile) (alts Alternative, err error) {
+    // alts, _ := maxCount(swf1(p))
+    // alt, _ := tieBreak(alts)
+    // return alt, nil
+    // il faut trifouiller le count
+  }
+}
+
+
+func SCFFactory(scf1 func (Profile) ([]Alternative, error), tieBreak func ([]Alternative) (Alternative, error)) (scf2 func(Profile) (alt Alternative, err error)) {
+  return func(p Profile) (alt Alternative, err error) {
+    alts, _ := scf1(p)
+    alt, _ := tieBreak(alts)
+    return alt, nil
+  }
+}
+
+
+
+
+// func TieBreak(a []Alternative) (Alternative, err error) {
+//   // if len(a) == 0 || a == nil {
+//   //   return _, errors.New("002: NullAlternatives")
+//   // }
+//   // for _,alt := range a {
+//   //
+//   // }                       // 0-votes alternatives are not included
+//   // return nil, nil
+// }
diff --git a/comsoc/utils.go b/ia04/comsoc/utils.go
similarity index 100%
rename from comsoc/utils.go
rename to ia04/comsoc/utils.go