diff --git a/src/lol/base/array.h b/src/lol/base/array.h
index 2eaa2685..849ed930 100644
--- a/src/lol/base/array.h
+++ b/src/lol/base/array.h
@@ -192,6 +192,38 @@ public:
         return false;
     }
 
+    //PushFirst, insert, etc : CRUDE VERSION
+    inline void PushFirst(T const &x)
+    {
+        ArrayBase<T, ARRAY> tmp;
+        tmp.Push(x);
+        tmp += *this;
+        *this = tmp;
+    }
+
+    inline bool PushUniqueFirst(T const &x)
+    {
+        int idx = Find(x);
+        if (idx == INDEX_NONE)
+        {
+            PushFirst(x);
+            return true;
+        }
+        return false;
+    }
+
+    inline void Insert(T const &x, int pos)
+    {
+        ArrayBase<T, ARRAY> tmp;
+        for (int i = 0; i < m_count; i++)
+        {
+            if (i == pos)
+                tmp.Push(x);
+            tmp.Push(m_data[i]);
+        }
+        *this = tmp;
+    }
+
     inline int Find(T const &x)
     {
         for (int i = 0; i < m_count; ++i)
diff --git a/src/lol/math/geometry.h b/src/lol/math/geometry.h
index 7ce01909..82c80047 100644
--- a/src/lol/math/geometry.h
+++ b/src/lol/math/geometry.h
@@ -254,7 +254,7 @@ bool TestRayVsPlane(const TV &ray_p0,  const TV &ray_p1,
 
     float t = (dot(ProjectPointOnPlane(ray_p0, plane_p, plane_n) - ray_p0, plane_n)) / dot(ray_dir, plane_n);
 
-    if (!test_line_only && (t < -TestEpsilon::Get() || t > 1.0f))
+    if (!test_line_only && (t < -TestEpsilon::Get() || t > 1.f + TestEpsilon::Get()))
         return false;
 
     isec_p = ray_p0 + t * ray_dir;