diff --git a/main.py b/main.py
index adcd1c8f1c31510020bea3ece98ddd2d7e971986..c6d21ddfbfbdbb8f7f2461f3b5227b963319dd89 100644
--- a/main.py
+++ b/main.py
@@ -19,22 +19,22 @@ class TriangleApp(App):
     classification = StringProperty()
 
     @staticmethod
-    def classify(a, b, c):  # buggy
-        if a * b * c < 0:
+    def classify(a, b, c):
+        if a < 0 or b < 0 or c < 0:
             return Classification.INVALID
-        if a == b and b == c:
-            return Classification.EQUILATERAL
-        if a == b or b == c:
-            return Classification.ISOSCELES
+        semiperimeter = (a + b + c) / 2
         maximum = a
         if b > maximum:
             maximum = b
-            if c > maximum:
-                maximum = c
-        semiperimeter = a + b + c / 2
+        if c > maximum:
+            maximum = c
         if maximum > semiperimeter:
             return Classification.INVALID
-        if a ** 2 + b ** 2 == c ** 2 or b ** 2 + a ** 2 == c ** 2 or c ** 2 + b ** 2 == a ** 2:
+        if a == b and b == c:
+            return Classification.EQUILATERAL
+        if a == b or b == c or c == a:
+            return Classification.ISOSCELES
+        if a ** 2 + b ** 2 == c ** 2 or b ** 2 + c ** 2 == a ** 2 or c ** 2 + a ** 2 == b ** 2:
             return Classification.RIGHT
         return Classification.SCALENE