diff --git a/Graphs/gGraphView.cpp b/Graphs/gGraphView.cpp
index 53757204..67c88b03 100644
--- a/Graphs/gGraphView.cpp
+++ b/Graphs/gGraphView.cpp
@@ -874,7 +874,9 @@ gGraph::gGraph(gGraphView *graphview,QString title,int height,short group) :
     m_layers.clear();
 
     if (graphview) {
-        graphview->AddGraph(this,group);
+        graphview->addGraph(this,group);
+        timer=new QTimer(graphview);
+        connect(timer,SIGNAL(timeout()),SLOT(Timeout()));
     } else {
         qWarning() << "gGraph created without a gGraphView container.. Naughty programmer!! Bad!!!";
     }
@@ -889,12 +891,7 @@ gGraph::gGraph(gGraphView *graphview,QString title,int height,short group) :
     m_quad->forceAntiAlias(true);
     f_miny=f_maxy=0;
     m_forceMinY=m_forceMaxY=false;
-    timer=new QTimer(graphview);
-    connect(timer,SIGNAL(timeout()),SLOT(Timeout()));
 }
-//gGraph::gGraph()
-//{
-//}
 gGraph::~gGraph()
 {
     for (int i=0;i<m_layers.size();i++) {
@@ -1088,7 +1085,7 @@ void gGraphView::queGraph(gGraph * g,int left, int top, int width, int height)
     dl_mutex.unlock();
 #endif
 }
-void gGraphView::TrashGraphs()
+void gGraphView::trashGraphs()
 {
     for (int i=0;i<m_graphs.size();i++) {
         //delete m_graphs[i];
@@ -1672,7 +1669,7 @@ gGraphView::gGraphView(QWidget *parent, gGraphView * shared) :
     setFocusPolicy(Qt::StrongFocus);
     m_showsplitter=true;
     timer=new QTimer(this);
-    connect(timer,SIGNAL(timeout()),SLOT(TimedRefresh()));
+    connect(timer,SIGNAL(timeout()),SLOT(refreshTimeout()));
 
 }
 gGraphView::~gGraphView()
@@ -1777,7 +1774,7 @@ void gGraphView::AddTextQue(QString & text, short x, short y, float angle, QColo
     q.font=font;
 }
 
-void gGraphView::AddGraph(gGraph *g,short group)
+void gGraphView::addGraph(gGraph *g,short group)
 {
     if (!g) {
         qDebug() << "Attempted to add an empty graph!";
@@ -2428,7 +2425,7 @@ void gGraphView::setDay(Day * day)
     }
     ResetBounds();
 }
-void gGraphView::TimedRefresh()
+void gGraphView::refreshTimeout()
 {
     updateGL();
 }
@@ -2438,7 +2435,6 @@ void gGraphView::timedRedraw(int ms)
         timer->stop();
     timer->setSingleShot(true);
     timer->start(ms);
-    //QTimer::singleShot(ms,this,SLOT(TimedRefresh()));
 }
 void gGraphView::resetLayout()
 {
@@ -2448,6 +2444,12 @@ void gGraphView::resetLayout()
     updateScale();
     updateGL();
 }
+void gGraphView::deselect()
+{
+    for (int i=0;i<m_graphs.size();i++) {
+        m_graphs[i]->deselect();
+    }
+}
 
 
 MyScrollBar::MyScrollBar(QWidget * parent)
diff --git a/Graphs/gGraphView.h b/Graphs/gGraphView.h
index 34670c1e..4a1955f8 100644
--- a/Graphs/gGraphView.h
+++ b/Graphs/gGraphView.h
@@ -378,10 +378,8 @@ class gGraphView : public QGLWidget
 public:
     explicit gGraphView(QWidget *parent = 0,gGraphView * shared=0);
     virtual ~gGraphView();
-    void AddGraph(gGraph *g,short group=0);
+    void addGraph(gGraph *g,short group=0);
 
-    void setScrollBar(MyScrollBar *sb);
-    MyScrollBar * scrollBar() { return m_scrollbar; }
     static const int titleWidth=30;
     static const int graphSpacer=4;
 
@@ -392,8 +390,9 @@ public:
     void ResetBounds(bool refresh=true); //short group=0);
     void SetXBounds(qint64 minx, qint64 maxx, short group=0,bool refresh=true);
 
-    bool hasGraphs() { return m_graphs.size()>0; }
+    //bool hasGraphs() { return m_graphs.size()>0; }
 
+    void deselect();
     QPoint pointClicked() { return m_point_clicked; }
     QPoint globalPointClicked() { return m_global_point_clicked; }
     void setPointClicked(QPoint p) { m_point_clicked=p; }
@@ -405,16 +404,20 @@ public:
     QTimer * timer;
 
     void AddTextQue(QString & text, short x, short y, float angle=0.0, QColor color=Qt::black, QFont * font=defaultfont);
-    int horizTravel() { return m_horiz_travel; }
     void DrawTextQue();
 
     int size() { return m_graphs.size(); }
     gGraph * operator[](int i) { return m_graphs[i]; }
 
+    MyScrollBar * scrollBar() { return m_scrollbar; }
+    void setScrollBar(MyScrollBar *sb);
     void updateScrollBar();
     void updateScale();         // update scale & Scrollbar
     void resetLayout();
+
+    int horizTravel() { return m_horiz_travel; }
     void setEmptyText(QString s) { m_emptytext=s; }
+
 #ifdef ENABLE_THREADED_DRAWING
     QMutex text_mutex;
     QMutex gl_mutex;
@@ -427,10 +430,10 @@ public:
     void setDay(Day * day);
     GLShortBuffer * lines, * backlines, *quads;
 
-    void TrashGraphs();
-    gGraph * popGraph();
+    gGraph * popGraph(); // exposed for multithreaded drawing
     void hideSplitter() { m_showsplitter=false; }
     void showSplitter() { m_showsplitter=true; }
+    void trashGraphs();
 protected:
     Day * m_day;
     float totalHeight();
@@ -441,7 +444,6 @@ protected:
     virtual void resizeGL(int width, int height);
     virtual void resizeEvent(QResizeEvent *);
 
-
     void setOffsetY(int offsetY);
     void setOffsetX(int offsetX);
 
@@ -452,12 +454,12 @@ protected:
     virtual void wheelEvent(QWheelEvent * event);
     virtual void keyPressEvent(QKeyEvent * event);
 
-    void queGraph(gGraph *,int originX, int originY, int width, int height);
-
+    void queGraph(gGraph *,int originX, int originY, int width, int height); // que graphs for drawing (used internally by paintGL)
     QList<gGraph *> m_drawlist;
 
     gGraphView *m_shared;       // convenient link to daily's graphs.
     QVector<gGraph *> m_graphs;
+
     int m_offsetY,m_offsetX;          // Scroll Offsets
     float m_scaleY;
 
@@ -478,7 +480,6 @@ protected:
     TextQue m_textque[textque_max];
     int m_textque_items;
     int m_lastxpos,m_lastypos;
-    //volatile int m_threadsrunning;
 
     QString m_emptytext;
     bool m_showsplitter;
@@ -487,7 +488,7 @@ signals:
 
 public slots:
     void scrollbarValueChanged(int val);
-    void TimedRefresh();
+    void refreshTimeout();
 };
 
 #endif // GGRAPHVIEW_H
diff --git a/overview.cpp b/overview.cpp
index 83e69e2e..6058c1b4 100644
--- a/overview.cpp
+++ b/overview.cpp
@@ -25,68 +25,76 @@ Overview::Overview(QWidget *parent,gGraphView * shared) :
 {
     ui->setupUi(this);
 
-    // Create dummy day & session for holding eventlists.
-    //day=new Day(mach);
+    // Set Date controls locale to 4 digit years
+    QLocale locale=QLocale::system();
+    QString shortformat=locale.dateFormat(QLocale::ShortFormat);
+    if (!shortformat.toLower().contains("yyyy")) {
+        shortformat.replace("yy","yyyy");
+    }
+    ui->dateStart->setDisplayFormat(shortformat);
+    ui->dateEnd->setDisplayFormat(shortformat);
 
+    // Stop both calendar drop downs highlighting weekends in red
+    QTextCharFormat format = ui->dateStart->calendarWidget()->weekdayTextFormat(Qt::Saturday);
+    format.setForeground(QBrush(Qt::black, Qt::SolidPattern));
+    ui->dateStart->calendarWidget()->setWeekdayTextFormat(Qt::Saturday, format);
+    ui->dateStart->calendarWidget()->setWeekdayTextFormat(Qt::Sunday, format);
+    ui->dateEnd->calendarWidget()->setWeekdayTextFormat(Qt::Saturday, format);
+    ui->dateEnd->calendarWidget()->setWeekdayTextFormat(Qt::Sunday, format);
+
+    // Connect the signals to update which days have CPAP data when the month is changed
+    connect(ui->dateStart->calendarWidget(),SIGNAL(currentPageChanged(int,int)),SLOT(dateStart_currentPageChanged(int,int)));
+    connect(ui->dateEnd->calendarWidget(),SIGNAL(currentPageChanged(int,int)),SLOT(dateEnd_currentPageChanged(int,int)));
+
+    // Create the horizontal layout to hold the GraphView object and it's scrollbar
     layout=new QHBoxLayout(ui->graphArea);
-    layout->setSpacing(0);
+    layout->setSpacing(0); // remove the ugly margins/spacing
     layout->setMargin(0);
     layout->setContentsMargins(0,0,0,0);
     ui->graphArea->setLayout(layout);
     ui->graphArea->setAutoFillBackground(false);
 
+    // Create the GraphView Object
     GraphView=new gGraphView(ui->graphArea,m_shared);
     GraphView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
 
+    // Create the custom scrollbar and attach to GraphView
     scrollbar=new MyScrollBar(ui->graphArea);
     scrollbar->setOrientation(Qt::Vertical);
     scrollbar->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Expanding);
     scrollbar->setMaximumWidth(20);
-
     GraphView->setScrollBar(scrollbar);
+
+    // Add the graphView and scrollbar to the layout.
     layout->addWidget(GraphView,1);
     layout->addWidget(scrollbar,0);
-
     layout->layout();
 
-    AHI=new gGraph(GraphView,"AHI",default_height,0);
-    UC=new gGraph(GraphView,"Usage",default_height,0);
-    PR=new gGraph(GraphView,"Pressure",default_height,0);
-    SET=new gGraph(GraphView,"Settings",default_height,0);
-    LK=new gGraph(GraphView,"Leaks",default_height,0);
-    SES=new gGraph(GraphView,"Sessions",default_height,0);
+    // TODO: Automate graph creation process
+
+    // The following code (to the closing marker) is crap --->
+    AHI=createGraph("AHI");
+    UC=createGraph("Usage");
+    PR=createGraph("Pressure");
+    SET=createGraph("Settings");
+    LK=createGraph("Leaks");
+    SES=createGraph("Sessions");
+    NPB=createGraph("% in PB");
 
     uc=new SummaryChart("Hours",GT_BAR);
     uc->addSlice("",QColor("green"),ST_HOURS);
-    UC->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gXAxis *gx=new gXAxis();
-    gx->setUtcFix(true);
-    UC->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     UC->AddLayer(uc);
-    UC->AddLayer(new gXGrid());
 
     ses=new SummaryChart("Sessions",GT_LINE);
     ses->addSlice("",QColor("blue"),ST_SESSIONS);
-    SES->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    SES->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     SES->AddLayer(ses);
-    SES->AddLayer(new gXGrid());
-
-
 
     bc=new SummaryChart("AHI",GT_BAR);
     bc->addSlice(CPAP_Hypopnea,QColor("blue"),ST_CPH);
     bc->addSlice(CPAP_Apnea,QColor("dark green"),ST_CPH);
     bc->addSlice(CPAP_Obstructive,QColor("#40c0ff"),ST_CPH);
     bc->addSlice(CPAP_ClearAirway,QColor("purple"),ST_CPH);
-    AHI->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    AHI->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     AHI->AddLayer(bc);
-    AHI->AddLayer(new gXGrid());
 
     set=new SummaryChart("",GT_LINE);
     //set->addSlice("SysOneResistSet",QColor("grey"),ST_SETAVG);
@@ -95,12 +103,7 @@ Overview::Overview(QWidget *parent,gGraphView * shared) :
     //set->addSlice("PAPMode",QColor("red"),ST_SETAVG);
     SET->forceMinY(0);
     SET->forceMaxY(5);
-    SET->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    SET->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     SET->AddLayer(set);
-    SET->AddLayer(new gXGrid());
 
     pr=new SummaryChart("cmH2O",GT_LINE);
     PR->forceMinY(4.0);
@@ -111,53 +114,19 @@ Overview::Overview(QWidget *parent,gGraphView * shared) :
     pr->addSlice(CPAP_Pressure,QColor("grey"),ST_90P);
     pr->addSlice(CPAP_EPAP,QColor("light green"),ST_MIN);
     pr->addSlice(CPAP_IPAP,QColor("light blue"),ST_MAX);
-
-    PR->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    PR->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     PR->AddLayer(pr);
-    PR->AddLayer(new gXGrid());
 
     lk=new SummaryChart("Avg Leak",GT_LINE);
     lk->addSlice(CPAP_Leak,QColor("dark grey"),ST_90P);
     lk->addSlice(CPAP_Leak,QColor("dark blue"),ST_WAVG);
     //lk->addSlice(CPAP_Leak,QColor("dark yellow"));
     //pr->addSlice(CPAP_IPAP,QColor("red"));
-    LK->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    LK->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
     LK->AddLayer(lk);
-    LK->AddLayer(new gXGrid());
 
-    NPB=new gGraph(GraphView,"% in PB",default_height,0);
     NPB->AddLayer(npb=new SummaryChart("% PB",GT_BAR));
     npb->addSlice(CPAP_CSR,QColor("light green"),ST_SPH);
-    NPB->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
-    gx=new gXAxis();
-    gx->setUtcFix(true);
-    NPB->AddLayer(gx,LayerBottom,0,gXAxis::Margin);
-    NPB->AddLayer(new gXGrid());
+    // <--- The code to the previous marker is crap
 
-
-    QLocale locale=QLocale::system();
-    QString shortformat=locale.dateFormat(QLocale::ShortFormat);
-    if (!shortformat.toLower().contains("yyyy")) {
-        shortformat.replace("yy","yyyy");
-    }
-    ui->dateStart->setDisplayFormat(shortformat);
-    ui->dateEnd->setDisplayFormat(shortformat);
-
-    QTextCharFormat format = ui->dateStart->calendarWidget()->weekdayTextFormat(Qt::Saturday);
-    format.setForeground(QBrush(Qt::black, Qt::SolidPattern));
-    ui->dateStart->calendarWidget()->setWeekdayTextFormat(Qt::Saturday, format);
-    ui->dateStart->calendarWidget()->setWeekdayTextFormat(Qt::Sunday, format);
-    ui->dateEnd->calendarWidget()->setWeekdayTextFormat(Qt::Saturday, format);
-    ui->dateEnd->calendarWidget()->setWeekdayTextFormat(Qt::Sunday, format);
-
-    connect(ui->dateStart->calendarWidget(),SIGNAL(currentPageChanged(int,int)),SLOT(dateStart_currentPageChanged(int,int)));
-    connect(ui->dateEnd->calendarWidget(),SIGNAL(currentPageChanged(int,int)),SLOT(dateEnd_currentPageChanged(int,int)));
     report=NULL;
 }
 Overview::~Overview()
@@ -168,9 +137,19 @@ Overview::~Overview()
         report->close();
         delete report;
     }
-    //delete day;
     delete ui;
 }
+gGraph * Overview::createGraph(QString name)
+{
+    gGraph *g=new gGraph(GraphView,name,default_height,0);
+    g->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
+    gXAxis *x=new gXAxis();
+    x->setUtcFix(true);
+    g->AddLayer(x,LayerBottom,0,gXAxis::Margin);
+    g->AddLayer(new gXGrid());
+    return g;
+}
+
 void Overview::ReloadGraphs()
 {
     ui->dateStart->setDate(p_profile->FirstDay());
@@ -196,8 +175,9 @@ void Overview::UpdateCalendarDay(QDateEdit * dateedit,QDate date)
     cpapcol.setFontWeight(QFont::Bold);
     oxiday.setForeground(QBrush(Qt::red, Qt::SolidPattern));
     oxiday.setFontWeight(QFont::Bold);
-    bool hascpap=PROFILE.GetDay(date,MT_CPAP)!=NULL;
-    bool hasoxi=PROFILE.GetDay(date,MT_OXIMETER)!=NULL;
+    bool hascpap=p_profile->GetDay(date,MT_CPAP)!=NULL;
+    bool hasoxi=p_profile->GetDay(date,MT_OXIMETER)!=NULL;
+    //bool hasjournal=p_profile->GetDay(date,MT_JOURNAL)!=NULL;
 
     if (hascpap) {
         if (hasoxi) {
@@ -266,12 +246,7 @@ QString Overview::GetHTML()
 
     QString html;
     if (report) {
-        bc->deselect();
-        uc->deselect();
-        pr->deselect();
-        lk->deselect();
-        npb->deselect();
-        ses->deselect();
+        GraphView->deselect();
 
         report->ReloadGraphs();
         QString reportname="overview";
@@ -284,7 +259,6 @@ QString Overview::GetHTML()
 }
 void Overview::on_printButton_clicked()
 {
-
     report->Print(GetHTML());
 }
 
diff --git a/overview.h b/overview.h
index 5d5a00fc..7a03c966 100644
--- a/overview.h
+++ b/overview.h
@@ -32,10 +32,13 @@ public:
     void ReloadGraphs();
     void ResetGraphLayout();
     void RedrawGraphs();
+    gGraph * createGraph(QString name);
 
 
     gGraph *AHI,*UC,*PR,*LK,*NPB,*SET,*SES;
     SummaryChart *bc,*uc,*pr,*lk,*npb,*set,*ses;
+    QVector<SummaryChart *> OverviewCharts;
+
 public slots:
     void on_printButton_clicked();
 
diff --git a/report.cpp b/report.cpp
index 08d26f32..162734c9 100644
--- a/report.cpp
+++ b/report.cpp
@@ -66,7 +66,7 @@ Report::Report(QWidget *parent, gGraphView * shared, Overview * overview) :
 
 Report::~Report()
 {
-    GraphView->TrashGraphs();
+    GraphView->trashGraphs();
     for (QHash<QString,gGraph *>::iterator g=graphs.begin();g!=graphs.end();g++) {
         delete g.value();
     }
@@ -94,8 +94,8 @@ QPixmap Report::Snapshot(gGraph * graph)
     QDateTime d2(endDate,QTime(23,59,59),Qt::UTC);
     qint64 last=qint64(d2.toTime_t())*1000L;
 
-    GraphView->TrashGraphs();
-    GraphView->AddGraph(graph);
+    GraphView->trashGraphs();
+    GraphView->addGraph(graph);
     GraphView->ResetBounds();
     GraphView->SetXBounds(first,last);