diff --git a/CHANGELOG.md b/CHANGELOG.md
index 38356d5..f7d8d44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,3 +35,7 @@
 # 0.1.7
 
 Added `toString` override
+
+# 0.1.8
+
+Support `Iterable` props
diff --git a/lib/src/equatable.dart b/lib/src/equatable.dart
index c67b72e..fee30ab 100644
--- a/lib/src/equatable.dart
+++ b/lib/src/equatable.dart
@@ -1,5 +1,3 @@
-import 'package:collection/collection.dart';
-
 /// A class that helps implement equality
 /// without needing to explicitly override == and [hashCode].
 /// Equatables override their own == and [hashCode] based on
@@ -20,7 +18,7 @@
       identical(this, other) ||
       other is Equatable &&
           runtimeType == other.runtimeType &&
-          ListEquality().equals(props, other.props);
+          _equals(props, other.props);
 
   @override
   int get hashCode => runtimeType.hashCode ^ _propsHashCode;
@@ -35,6 +33,21 @@
     return hashCode;
   }
 
+  bool _equals(list1, list2) {
+    if (identical(list1, list2)) return true;
+    if (list1 == null || list2 == null) return false;
+    int length = list1.length;
+    if (length != list2.length) return false;
+    for (int i = 0; i < length; i++) {
+      if (list1[i] is Iterable) {
+        if (!_equals(list1[i], list2[i])) return false;
+      } else {
+        if (list1[i] != list2[i]) return false;
+      }
+    }
+    return true;
+  }
+
   @override
   String toString() => props.toString();
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index ca3a92e..5582714 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: equatable
 description: An abstract class that helps to implement equality without needing to explicitly override == and hashCode.
-version: 0.1.7
+version: 0.1.8
 author: felix.angelov <felangelov@gmail.com>
 homepage: https://github.com/felangel/equatable
 
diff --git a/test/equatable_test.dart b/test/equatable_test.dart
index b19e183..0121a40 100644
--- a/test/equatable_test.dart
+++ b/test/equatable_test.dart
@@ -31,9 +31,10 @@
   final String name;
   final int age;
   final Color hairColor;
+  final List<String> children;
 
-  ComplexEquatable({this.name, this.age, this.hairColor})
-      : super([name, age, hairColor]);
+  ComplexEquatable({this.name, this.age, this.hairColor, this.children})
+      : super([name, age, hairColor, children]);
 }
 
 class EquatableData extends Equatable {
@@ -303,14 +304,16 @@
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
-      expect(instance.toString(), '[Joe, 40, Color.black]');
+      expect(instance.toString(), '[Joe, 40, Color.black, [Bob]]');
     });
     test('should return true when instance is the same', () {
       final instance = ComplexEquatable(
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       expect(instance == instance, true);
     });
@@ -320,13 +323,15 @@
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       expect(
         instance.hashCode,
         instance.runtimeType.hashCode ^
             instance.name.hashCode ^
             instance.age.hashCode ^
-            instance.hairColor.hashCode,
+            instance.hairColor.hashCode ^
+            instance.children.hashCode,
       );
     });
 
@@ -335,11 +340,13 @@
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       final instanceB = ComplexEquatable(
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       expect(instanceA == instanceB, true);
     });
@@ -349,6 +356,7 @@
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       final instanceB = NonEquatable();
       expect(instanceA == instanceB, false);
@@ -359,11 +367,13 @@
         name: 'Joe',
         age: 40,
         hairColor: Color.black,
+        children: ['Bob'],
       );
       final instanceB = ComplexEquatable(
         name: 'John',
-        age: 46,
+        age: 40,
         hairColor: Color.brown,
+        children: ['Bobby'],
       );
       expect(instanceA == instanceB, false);
     });
