towards version 0.2
diff --git a/crashreports/models.py b/crashreports/models.py
index 38d86ff..ebf9c4b 100644
--- a/crashreports/models.py
+++ b/crashreports/models.py
@@ -1,29 +1,55 @@
     # -*- coding: utf-8 -*-
 from django.db import models
 import datetime
+from django.contrib.auth.models import User
+from taggit.managers import TaggableManager
+import uuid
+
+class Device(models.Model):
+    # for every device there is a django user
+    uuid           = models.CharField(max_length=64, unique=True, default=uuid.uuid4, editable=False)
+    user           = models.OneToOneField(User, related_name='Hiccup_Device', on_delete=models.CASCADE, unique=True)
+    imei           = models.CharField(max_length=32, null=True, blank=True)
+    board_date     = models.DateTimeField(null=True, blank= True)
+    chipset        = models.CharField(max_length=200, null=True, blank= True)
+    tags           = TaggableManager(blank=True)
+    last_heartbeat = models.DateTimeField(null=True, blank=True)
+    token          = models.CharField(max_length=200, null=True, blank=True)
 
 def crashreport_file_name(instance, filename):
-    return '/'.join(["crashreport_uploads", instance.uuid, str(datetime.date.today().year), str(datetime.date.today().month), str(datetime.date.today().day), filename])
-
+    return '/'.join([
+        "crashreport_uploads",
+        instance.device.uuid,
+        instance.crashreport.id,
+        str(instance.crashreport.date),
+        filename])
 
 class Crashreport(models.Model):
-    uuid = models.CharField(max_length=200)
-    report_type = models.CharField(max_length=200)
+    device            = models.ForeignKey(Device, on_delete=models.CASCADE)
+    is_fake_report    = models.BooleanField(default=False)
+    app_version       = models.IntegerField()
+    uptime            = models.CharField(max_length=200)
+    build_fingerprint = models.CharField(max_length=200)
+    boot_reason       = models.CharField(max_length=200)
+    power_on_reason   = models.CharField(max_length=200)
+    power_off_reason  = models.CharField(max_length=200)
+    date              = models.DateTimeField()
+    tags = TaggableManager(blank=True)
+    def _get_uuid(self):
+        "Returns the person's full name."
+        return self.device.uuid
+    uuid = property(_get_uuid)
+    
+
+class LogFile(models.Model):
+    logfile_type      = models.TextField(max_length=36)
+    device       = models.ForeignKey(Device, on_delete=models.CASCADE)
+    crashreport       = models.ForeignKey(Crashreport, on_delete=models.CASCADE)
+    crashreport_file  = models.FileField(upload_to=crashreport_file_name)
+
+class HeartBeat(models.Model):    
+    device = models.ForeignKey(Device, on_delete=models.CASCADE)
     app_version = models.IntegerField()
     uptime = models.CharField(max_length=200)
     build_fingerprint = models.CharField(max_length=200)
-    boot_reason = models.CharField(max_length=200)
-    power_on_reason = models.CharField(max_length=200)
-    power_off_reason = models.CharField(max_length=200)
-    aux_data = models.CharField(max_length=200)
     date = models.DateTimeField()
-    crashreport_file = models.FileField(upload_to=crashreport_file_name, null=True, blank=True)
-
-    def crashreport_file_link(self):
-        if self.crashreport_file:
-            return '<a href="/hiccup/' + str(self.crashreport_file.url) + '">' + 'Logfile' + '</a>'
-        else:
-            return '<a href="''"></a>'
-
-    crashreport_file_link.allow_tags = True
-    crashreport_file_link.short_description = "File Link"