public class Student { public Guid Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime Created { get; set; } = DateTime.Now; public IColletion Objectives { get; set; } public ICollection Goals { get; set; } } public class Goal { public Guid Id { get; set; } public string Name { get; set; } public DateTime Created { get; set; } public DateTime? Started { get; set; } } public class Objective { public Guid Id { get; set; } public string Name { get; set; } public string Description { get; set; } public DateTime Target { get; set; } public Student Student { get; set; } public ICollection Tracks { get; set; } public TrackType TrackType { get; set; } } public class Track { public Guid Id { get; set; } public DateTime Date { get; set; } public Objective Objective { get; set; } public object Data { get; set; } } public enum TrackType { [Description("Yes/No")] YesNo = 0, Percent = 1, [Desciption("Times per duration")] TimesPer = 2 }