diff --git a/sleepyhead/Graphs/gGraphView.cpp b/sleepyhead/Graphs/gGraphView.cpp
index 41c95a75..3ec022d3 100644
--- a/sleepyhead/Graphs/gGraphView.cpp
+++ b/sleepyhead/Graphs/gGraphView.cpp
@@ -1492,7 +1492,7 @@ void gGraphView::paintGL()
         redrawtimer->stop();
     }
 
-    bool something_fun = PROFILE.ExistsAndTrue("AnimationsAndTransitions");
+    bool something_fun = PROFILE.appearance->animations();
 
     if (width() <= 0) { return; }
 
diff --git a/sleepyhead/Graphs/glcommon.h b/sleepyhead/Graphs/glcommon.h
index 4d3ed340..d50efac7 100644
--- a/sleepyhead/Graphs/glcommon.h
+++ b/sleepyhead/Graphs/glcommon.h
@@ -15,6 +15,10 @@
 #include <QtOpenGL/qgl.h>
 #include <QColor>
 
+#ifndef nullptr
+#define nullptr NULL
+#endif
+
 #ifdef Q_OS_MAC
 # define USE_RENDERTEXT
 # include "OpenGL/glu.h"
diff --git a/sleepyhead/SleepLib/common.h b/sleepyhead/SleepLib/common.h
index c702bda9..394fc87b 100644
--- a/sleepyhead/SleepLib/common.h
+++ b/sleepyhead/SleepLib/common.h
@@ -51,6 +51,10 @@ QString weightString(float kg, UnitSystem us = US_Undefined);
 bool removeDir(const QString &path);
 
 
+#ifndef nullptr
+#define nullptr NULL
+#endif
+
 #ifdef TEST_BUILD
 const QString STR_TestBuild = "-Testing";
 #else
diff --git a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp
index 0fb431cc..33f5a048 100644
--- a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp
+++ b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp
@@ -87,48 +87,46 @@ int IntellipapLoader::Open(QString &path, Profile *profile)
     f.open(QFile::ReadOnly);
     QTextStream tstream(&f);
 
-    QHash<QString, QString> lookup = {
-        {"Sn", STR_PROP_Serial },
-        {"Mn", STR_PROP_ModelNumber },
-        {"Mo", "PAPMode" },     // 0 cpap, 1 auto
-        //{"Pn", "??" },
-        {"Pu", "MaxPressure" },
-        {"Pl", "MaxPressure" },
-        //{"Ds", "??" },
-        //{"Pc", "??" },
-        {"Pd", "RampPressure" }, // Pressure Delay
-        {"Dt", "RampTime" },
-        //{"Ld", "??" },
-        //{"Lh", "??" },
-        //{"FC", "??" },
-        //{"FE", "??" },
-        //{"FL", "??" },
-        {"A%", "ApneaThreshold" },
-        {"Ad", "ApneaDuration" },
-        {"H%", "HypopneaThreshold" },
-        {"Hd", "HypopneaDuration" },
-        //{"Pi", "??" },
-        //{"Pe", "??" },
-        {"Ri", "SmartFlexIRnd" },  // Inhale Rounding (0-5)
-        {"Re", "SmartFlexERnd" }, // Inhale Rounding (0-5)
-        //{"Bu", "??" }, // WF
-        //{"Ie", "??" }, // 20
-        //{"Se", "??" }, // 05
-        //{"Si", "??" }, // 05
-        //{"Mi", "??" }, // 0
-        {"Uh", "HoursMeter"}, // 0000.0
-        {"Up", "ComplianceMeter"}, // 0000.00
-        //{"Er", "ErrorCode"}, // E00
-        //{"El", "LastErrorCode"}, // E00 00/00/0000
-        //{"Hp", "??"}, // 1
-        //{"Hs", "??"}, // 02
-        //{"Lu", "LowUseThreshold"}, // defaults to 0 (4 hours)
-        {"Sf", "SmartFlex"},
-        {"Sm", "SmartFlexMode"},
-        {"Ks=s", "Ks_s"},
-        {"Ks=i", "ks_i"}
-
-    };
+    QHash<QString, QString> lookup;
+        lookup["Sn"]=STR_PROP_Serial;
+        lookup["Mn"]=STR_PROP_ModelNumber;
+        lookup["Mo"]="PAPMode";     // 0 cpap, 1 auto
+        //lookup["Pn"]="??";
+        lookup["Pu"]="MaxPressure";
+        lookup["Pl"]="MaxPressure";
+        //lookup["Ds"]="??";
+        //lookup["Pc"]="??";
+        lookup["Pd"]="RampPressure"; // Pressure Delay
+        lookup["Dt"]="RampTime";
+        //lookup["Ld"]="??";
+        //lookup["Lh"]="??";
+        //lookup["FC"]="??";
+        //lookup["FE"]="??";
+        //lookup["FL"]="??";
+        lookup["A%"]="ApneaThreshold";
+        lookup["Ad"]="ApneaDuration";
+        lookup["H%"]="HypopneaThreshold";
+        lookup["Hd"]="HypopneaDuration";
+        //lookup["Pi"]="??";
+        //lookup["Pe"]="??";
+        lookup["Ri"]="SmartFlexIRnd";  // Inhale Rounding (0-5)
+        lookup["Re"]="SmartFlexERnd"; // Inhale Rounding (0-5)
+        //lookup["Bu"]="??"; // WF
+        //lookup["Ie"]="??"; // 20
+        //lookup["Se"]="??"; // 05
+        //lookup["Si"]="??"; // 05
+        //lookup["Mi"]="??"; // 0
+        lookup["Uh"]="HoursMeter"; // 0000.0
+        lookup["Up"]="ComplianceMeter"; // 0000.00
+        //lookup["Er"]="ErrorCode";, // E00
+        //lookup["El"]="LastErrorCode"; // E00 00/00/0000
+        //lookup["Hp"]="??";, // 1
+        //lookup["Hs"]="??";, // 02
+        //lookup["Lu"]="LowUseThreshold"; // defaults to 0 (4 hours)
+        lookup["Sf"]="SmartFlex";
+        lookup["Sm"]="SmartFlexMode";
+        lookup["Ks=s"]="Ks_s";
+        lookup["Ks=i"]="ks_i";
 
     QHash<QString, QString> set1;
     QHash<QString, QString>::iterator hi;
diff --git a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp
index 6c030df9..064ccad8 100644
--- a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp
+++ b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp
@@ -1489,19 +1489,18 @@ int ResmedLoader::Open(QString &path, Profile *profile)
                     // VPAP Auto has EPAP, Min EPAP, IPAP and Max IPAP, and PS
                     // VPAP Adapt 36007 has just EPAP and PSLo/Hi,
                     // VPAP Adapt 36037 has EPAPLo, EPAPHi and PSLo/Hi
-                    QHash<ChannelID, QString> hash = {
-                        { CPAP_EPAP, "EPAP" },
-                        { CPAP_IPAP, "IPAP" },
-                        { CPAP_EPAPLo, "Min EPAP" },
-                        { CPAP_EPAPHi, "Max EPAP" },
-                        { CPAP_IPAPLo, "Min IPAP" },
-                        { CPAP_IPAPHi, "Max IPAP" },
-                        { CPAP_PS, "PS" },
-                        { CPAP_PSMin, "Min PS" },
-                        { CPAP_PSMax, "Max PS" },
-                        { CPAP_RespRate, "RR" }, // Is this a setting to force respiratory rate on S/T machines? or an average
-                        { CPAP_PresReliefSet, "Easy-Breathe" },
-                    };
+                    QHash<ChannelID, QString> hash;
+                    hash[CPAP_EPAP] = "EPAP";
+                    hash[CPAP_IPAP] = "IPAP";
+                    hash[CPAP_EPAPLo] = "Min EPAP";
+                    hash[CPAP_EPAPHi] = "Max EPAP";
+                    hash[CPAP_IPAPLo] = "Min IPAP";
+                    hash[CPAP_IPAPHi] = "Max IPAP";
+                    hash[CPAP_PS] = "PS";
+                    hash[CPAP_PSMin] = "Min PS";
+                    hash[CPAP_PSMax] = "Max PS";
+                    hash[CPAP_RespRate] = "RR"; // Is this a setting to force respiratory rate on S/T machines? or an average
+                    hash[CPAP_PresReliefSet] = "Easy-Breathe";
 
                     for (auto it = hash.begin(); it != hash.end(); ++it) {
                         auto a = stredf.lookup.find(it.value());
@@ -2401,28 +2400,27 @@ bool ResmedLoader::LoadPLD(Session *sess, EDFParser &edf)
 void ResInitModelMap()
 {
     // don't really need this anymore
-    Resmed_Model_Map = {
-        { "S9 Escape",      { 36001, 36011, 36021, 36141, 36201, 36221, 36261, 36301, 36361 } },
-        { "S9 Escape Auto", { 36002, 36012, 36022, 36302, 36362 } },
-        { "S9 Elite",       { 36003, 36013, 36023, 36103, 36113, 36123, 36143, 36203, 36223, 36243, 36263, 36303, 36343, 36363 } },
-        { "S9 Autoset",     { 36005, 36015, 36025, 36105, 36115, 36125, 36145, 36205, 36225, 36245, 36265, 36305, 36325, 36345, 36365 } },
-        { "S9 AutoSet CS",  { 36100, 36110, 36120, 36140, 36200, 36220, 36360 } },
-        { "S9 AutoSet 25",  { 36106, 36116, 36126, 36146, 36206, 36226, 36366 } },
-        { "S9 AutoSet for Her", { 36065 } },
-        { "S9 VPAP S",      { 36004, 36014, 36024, 36114, 36124, 36144, 36204, 36224, 36284, 36304 } },
-        { "S9 VPAP Auto",   { 36006, 36016, 36026 } },
-        { "S9 VPAP Adapt",  { 36037, 36007, 36017, 36027, 36367 } },
-        { "S9 VPAP ST",     { 36008, 36018, 36028, 36108, 36148, 36208, 36228, 36368 } },
-        { "S9 VPAP ST 22",  { 36118, 36128 } },
-        { "S9 VPAP ST-A",   { 36039, 36159, 36169, 36379 } },
-/* S8 Series
-        { "S8 Escape",      { 33007 } },
-        { "S8 Elite II",    { 33039 } },
-        { "S8 Escape II",   { 33051 } },
-        { "S8 Escape II AutoSet", { 33064 } },
-        { "S8 AutoSet II",  { 33129 } },
-            */
-    };
+//    Resmed_Model_Map = {
+//        { "S9 Escape",      { 36001, 36011, 36021, 36141, 36201, 36221, 36261, 36301, 36361 } },
+//        { "S9 Escape Auto", { 36002, 36012, 36022, 36302, 36362 } },
+//        { "S9 Elite",       { 36003, 36013, 36023, 36103, 36113, 36123, 36143, 36203, 36223, 36243, 36263, 36303, 36343, 36363 } },
+//        { "S9 Autoset",     { 36005, 36015, 36025, 36105, 36115, 36125, 36145, 36205, 36225, 36245, 36265, 36305, 36325, 36345, 36365 } },
+//        { "S9 AutoSet CS",  { 36100, 36110, 36120, 36140, 36200, 36220, 36360 } },
+//        { "S9 AutoSet 25",  { 36106, 36116, 36126, 36146, 36206, 36226, 36366 } },
+//        { "S9 AutoSet for Her", { 36065 } },
+//        { "S9 VPAP S",      { 36004, 36014, 36024, 36114, 36124, 36144, 36204, 36224, 36284, 36304 } },
+//        { "S9 VPAP Auto",   { 36006, 36016, 36026 } },
+//        { "S9 VPAP Adapt",  { 36037, 36007, 36017, 36027, 36367 } },
+//        { "S9 VPAP ST",     { 36008, 36018, 36028, 36108, 36148, 36208, 36228, 36368 } },
+//        { "S9 VPAP ST 22",  { 36118, 36128 } },
+//        { "S9 VPAP ST-A",   { 36039, 36159, 36169, 36379 } },
+//      //S8 Series
+//        { "S8 Escape",      { 33007 } },
+//        { "S8 Elite II",    { 33039 } },
+//        { "S8 Escape II",   { 33051 } },
+//        { "S8 Escape II AutoSet", { 33064 } },
+//        { "S8 AutoSet II",  { 33129 } },
+//    };
 
     ////////////////////////////////////////////////////////////////////////////
     // Translation lookup table for non-english machines
@@ -2430,53 +2428,68 @@ void ResInitModelMap()
 
     // Only put the first part, enough to be identifiable, because ResMed likes
     // to signal names crop short
-    resmed_codes = {
-        { CPAP_FlowRate, { "Flow" } },
-        { CPAP_MaskPressureHi, { "Mask Pres", } },
-        { CPAP_MaskPressure, { "Mask Pres", } },
-        { CPAP_RespEvent, { "Resp Event" } },
-        { CPAP_Pressure, { "Therapy Pres", } },
-        { CPAP_IPAP, { "Insp Pres" } },
-        { CPAP_EPAP, { "Exp Pres", } },
-        { CPAP_Leak, { "Leak", "Leck", "Lekk", "Läck", "Läck", } },
-        { CPAP_RespRate, { "RR", "AF", "FR" } },
-        { CPAP_MinuteVent, { "MV", "VM" } },
-        { CPAP_TidalVolume, { "Vt", "VC" } },
-        { CPAP_IE, { "I:E" } },
-        { CPAP_Snore, { "Snore" } },
-        { CPAP_FLG, { "FFL Index" } },
-        { CPAP_Ti, { "Ti" } },
-        { CPAP_Te, { "Te" } },
-        { CPAP_TgMV, { "TgMV" } },
-        { OXI_Pulse, { "Pulse", "Puls", "Pols" } },
-        { OXI_SPO2, { "SpO2" } },
+    // Read this from a table?
 
-        { CPAP_Obstructive, { "Obstructive apnea" } },
-        { CPAP_Hypopnea, { "Hypopnea" } },
-        { CPAP_Apnea, { "Apnea" } },
-        { CPAP_ClearAirway, { "Central apnea" } },
-        { CPAP_Mode, { "Mode", "Modus", "Funktion" } },
 
-        { RMS9_SetPressure, { "SetPressure", "Eingest. Druck", "Ingestelde druk", "Pres. prescrite", "Inställt tryck", "Inställt tryck" } },
-        { RMS9_EPR, { "EPR" } },
-        { RMS9_EPRSet, { "EPR Level", "EPR-Stufe", "EPR-niveau", "Niveau EPR", "EPR-nivå", "EPR-nivÃ¥" } },
-
-        { CPAP_PressureMax, {
-              "Max Pressure",
-              "Max. Druck",       // German
-              "Max druk",         // Dutch
-              "Pression max.",    // French
-              "Max tryck",        // Swedish
-        } },
-        { CPAP_PressureMin, {
-              "Min Pressure",
-              "Min. Druck",       // German
-              "Min druk",         // Dutch
-              "Pression min.",    // French
-              "Min tryck",        // Swedish
-        } },
-
-    };
+    resmed_codes[CPAP_FlowRate].push_back("Flow");
+    resmed_codes[CPAP_MaskPressureHi].push_back("Mask Pres");
+    resmed_codes[CPAP_MaskPressure].push_back("Mask Pres");
+    resmed_codes[CPAP_RespEvent].push_back("Resp Event");
+    resmed_codes[CPAP_Pressure].push_back("Therapy Pres");
+    resmed_codes[CPAP_IPAP].push_back("Insp Pres");
+    resmed_codes[CPAP_EPAP].push_back("Exp Pres");
+    resmed_codes[CPAP_Leak].push_back("Leak");
+    resmed_codes[CPAP_Leak].push_back("Leck");
+    resmed_codes[CPAP_Leak].push_back("Lekk");
+    resmed_codes[CPAP_Leak].push_back("Läck");
+    resmed_codes[CPAP_Leak].push_back("Läck");
+    resmed_codes[CPAP_RespRate].push_back("RR");
+    resmed_codes[CPAP_RespRate].push_back("AF");
+    resmed_codes[CPAP_RespRate].push_back("FR");
+    resmed_codes[CPAP_MinuteVent].push_back("MV");
+    resmed_codes[CPAP_MinuteVent].push_back("VM");
+    resmed_codes[CPAP_TidalVolume].push_back("Vt");
+    resmed_codes[CPAP_TidalVolume].push_back("VC");
+    resmed_codes[CPAP_IE].push_back("I:E");
+    resmed_codes[CPAP_Snore].push_back("Snore");
+    resmed_codes[CPAP_FLG].push_back("FFL Index");
+    resmed_codes[CPAP_Ti].push_back("Ti");
+    resmed_codes[CPAP_Te].push_back("Te");
+    resmed_codes[CPAP_TgMV].push_back("TgMV");
+    resmed_codes[OXI_Pulse].push_back("Pulse");
+    resmed_codes[OXI_Pulse].push_back("Puls");
+    resmed_codes[OXI_Pulse].push_back("Pols");
+    resmed_codes[OXI_SPO2].push_back("SpO2");
+    resmed_codes[CPAP_Obstructive].push_back("Obstructive apnea");
+    resmed_codes[CPAP_Hypopnea].push_back("Hypopnea");
+    resmed_codes[CPAP_Apnea].push_back("Apnea");
+    resmed_codes[CPAP_ClearAirway].push_back("Central apnea");
+    resmed_codes[CPAP_Mode].push_back("Mode");
+    resmed_codes[CPAP_Mode].push_back("Modus");
+    resmed_codes[CPAP_Mode].push_back("Funktion");
+    resmed_codes[RMS9_SetPressure].push_back("SetPressure");
+    resmed_codes[RMS9_SetPressure].push_back("Eingest. Druck");
+    resmed_codes[RMS9_SetPressure].push_back("Ingestelde druk");
+    resmed_codes[RMS9_SetPressure].push_back("Pres. prescrite");
+    resmed_codes[RMS9_SetPressure].push_back("Inställt tryck");
+    resmed_codes[RMS9_SetPressure].push_back("Inställt tryck");
+    resmed_codes[RMS9_EPR].push_back("EPR");
+    resmed_codes[RMS9_EPRSet].push_back("EPR Level");
+    resmed_codes[RMS9_EPRSet].push_back("EPR-Stufe");
+    resmed_codes[RMS9_EPRSet].push_back("EPR-niveau");
+    resmed_codes[RMS9_EPRSet].push_back("Niveau EPR");
+    resmed_codes[RMS9_EPRSet].push_back("EPR-nivå");
+    resmed_codes[RMS9_EPRSet].push_back("EPR-nivå");
+    resmed_codes[CPAP_PressureMax].push_back("Max Pressure");
+    resmed_codes[CPAP_PressureMax].push_back("Max. Druck");
+    resmed_codes[CPAP_PressureMax].push_back("Max druk");
+    resmed_codes[CPAP_PressureMax].push_back("Pression max.");
+    resmed_codes[CPAP_PressureMax].push_back("Max tryck");
+    resmed_codes[CPAP_PressureMin].push_back("Min Pressure");
+    resmed_codes[CPAP_PressureMin].push_back("Min. Druck");
+    resmed_codes[CPAP_PressureMin].push_back("Min druk");
+    resmed_codes[CPAP_PressureMin].push_back("Pression min.");
+    resmed_codes[CPAP_PressureMin].push_back("Min tryck");
 }
 
 
diff --git a/sleepyhead/sleepyhead.pro b/sleepyhead/sleepyhead.pro
index a62b3bb0..d1332ccd 100644
--- a/sleepyhead/sleepyhead.pro
+++ b/sleepyhead/sleepyhead.pro
@@ -12,7 +12,7 @@ greaterThan(QT_MAJOR_VERSION,4) {
     QT += webkit
 }
 
-CONFIG += c++11
+#CONFIG += c++11
 CONFIG += rtti
 
 
@@ -56,6 +56,8 @@ unix:!macx {
 }
 
 macx {
+  QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
+
   LIBS             += -lz
   ICON              = icons/iconfile.icns
 }
diff --git a/sleepyhead/statistics.cpp b/sleepyhead/statistics.cpp
index 67dcc360..1a264050 100644
--- a/sleepyhead/statistics.cpp
+++ b/sleepyhead/statistics.cpp
@@ -31,76 +31,71 @@ QString formatTime(float time)
 Statistics::Statistics(QObject *parent) :
     QObject(parent)
 {
-    rows = {
-                { tr("CPAP Statistics"), SC_HEADING, MT_CPAP },
-                { "", SC_DAYS, MT_CPAP },
-                { "", SC_COLUMNHEADERS, MT_CPAP },
-                { tr("CPAP Usage"),  SC_SUBHEADING, MT_CPAP },
-                { tr("Average Hours per Night"),      SC_HOURS,     MT_CPAP },
-                { tr("Compliancy"),  SC_COMPLIANCE,  MT_CPAP },
+    rows.push_back(StatisticsRow(tr("CPAP Statistics"), SC_HEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("",   SC_DAYS, MT_CPAP));
+    rows.push_back(StatisticsRow("", SC_COLUMNHEADERS, MT_CPAP));
+    rows.push_back(StatisticsRow(tr("CPAP Usage"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow(tr("Average Hours per Night"),      SC_HOURS,     MT_CPAP));
+    rows.push_back(StatisticsRow(tr("Compliancy"),  SC_COMPLIANCE,  MT_CPAP));
 
-                { tr("Therapy Efficiacy"),  SC_SUBHEADING, MT_CPAP },
-                { "AHI",        SC_AHI,     MT_CPAP },
-                { "Obstructive",   SC_CPH,     MT_CPAP },
-                { "Hypopnea",   SC_CPH,     MT_CPAP },
-                { "ClearAirway",   SC_CPH,     MT_CPAP },
-                { "FlowLimit",  SC_CPH,     MT_CPAP },
-                { "RERA",       SC_CPH,     MT_CPAP },
-                { "CSR", SC_SPH, MT_CPAP },
+    rows.push_back(StatisticsRow(tr("Therapy Efficiacy"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("AHI",        SC_AHI,     MT_CPAP));
+    rows.push_back(StatisticsRow("Obstructive",   SC_CPH,     MT_CPAP));
+    rows.push_back(StatisticsRow("Hypopnea",   SC_CPH,     MT_CPAP));
+    rows.push_back(StatisticsRow("ClearAirway",   SC_CPH,     MT_CPAP));
+    rows.push_back(StatisticsRow("FlowLimit",  SC_CPH,     MT_CPAP));
+    rows.push_back(StatisticsRow("RERA",       SC_CPH,     MT_CPAP));
+    rows.push_back(StatisticsRow("CSR", SC_SPH, MT_CPAP));
 
-                { tr("Leak Statistics"),  SC_SUBHEADING, MT_CPAP },
-                { "Leak",       SC_WAVG,    MT_CPAP },
-                { "Leak",       SC_90P,     MT_CPAP },
+    rows.push_back(StatisticsRow(tr("Leak Statistics"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("Leak",       SC_WAVG,    MT_CPAP));
+    rows.push_back(StatisticsRow("Leak",       SC_90P,     MT_CPAP));
 
-                { tr("Pressure Statistics"),  SC_SUBHEADING, MT_CPAP },
-                { "Pressure",   SC_WAVG,    MT_CPAP },
-                { "Pressure",   SC_MIN,     MT_CPAP },
-                { "Pressure",   SC_MAX,     MT_CPAP },
-                { "Pressure",   SC_90P,     MT_CPAP },
-                { "EPAP",       SC_WAVG,    MT_CPAP },
-                { "EPAP",       SC_MIN,     MT_CPAP },
-                { "EPAP",       SC_MAX,     MT_CPAP },
-                { "IPAP",       SC_WAVG,    MT_CPAP },
-                { "IPAP",       SC_90P,     MT_CPAP },
-                { "IPAP",       SC_MIN,     MT_CPAP },
-                { "IPAP",       SC_MAX,     MT_CPAP },
+    rows.push_back(StatisticsRow(tr("Pressure Statistics"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("Pressure",   SC_WAVG,    MT_CPAP));
+    rows.push_back(StatisticsRow("Pressure",   SC_MIN,     MT_CPAP));
+    rows.push_back(StatisticsRow("Pressure",   SC_MAX,     MT_CPAP));
+    rows.push_back(StatisticsRow("Pressure",   SC_90P,     MT_CPAP));
+    rows.push_back(StatisticsRow("EPAP",       SC_WAVG,    MT_CPAP));
+    rows.push_back(StatisticsRow("EPAP",       SC_MIN,     MT_CPAP));
+    rows.push_back(StatisticsRow("EPAP",       SC_MAX,     MT_CPAP));
+    rows.push_back(StatisticsRow("IPAP",       SC_WAVG,    MT_CPAP));
+    rows.push_back(StatisticsRow("IPAP",       SC_90P,     MT_CPAP));
+    rows.push_back(StatisticsRow("IPAP",       SC_MIN,     MT_CPAP));
+    rows.push_back(StatisticsRow("IPAP",       SC_MAX,     MT_CPAP));
 
-                { tr("Oximeter Statistics"), SC_HEADING, MT_OXIMETER },
-                { "",           SC_DAYS,    MT_OXIMETER },
-                { "",           SC_COLUMNHEADERS, MT_OXIMETER },
+    rows.push_back(StatisticsRow(tr("Oximeter Statistics"), SC_HEADING, MT_OXIMETER));
+    rows.push_back(StatisticsRow("",           SC_DAYS,    MT_OXIMETER));
+    rows.push_back(StatisticsRow("",           SC_COLUMNHEADERS, MT_OXIMETER));
 
-                { tr("Blood Oxygen Saturation"),  SC_SUBHEADING, MT_CPAP },
-                { "SPO2",       SC_WAVG,     MT_OXIMETER },
-                { "SPO2",       SC_MIN,     MT_OXIMETER },
-                { "SPO2Drop",   SC_CPH,     MT_OXIMETER },
-                { "SPO2Drop",   SC_SPH,     MT_OXIMETER },
-                { tr("Pulse Rate"),  SC_SUBHEADING, MT_CPAP },
-                { "Pulse",      SC_WAVG,     MT_OXIMETER },
-                { "Pulse",      SC_MIN,     MT_OXIMETER },
-                { "Pulse",      SC_MAX,     MT_OXIMETER },
-                { "PulseChange",   SC_CPH,     MT_OXIMETER },
-    };
+    rows.push_back(StatisticsRow(tr("Blood Oxygen Saturation"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("SPO2",       SC_WAVG,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("SPO2",       SC_MIN,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("SPO2Drop",   SC_CPH,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("SPO2Drop",   SC_SPH,     MT_OXIMETER));
+    rows.push_back(StatisticsRow(tr("Pulse Rate"),  SC_SUBHEADING, MT_CPAP));
+    rows.push_back(StatisticsRow("Pulse",      SC_WAVG,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("Pulse",      SC_MIN,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("Pulse",      SC_MAX,     MT_OXIMETER));
+    rows.push_back(StatisticsRow("PulseChange",   SC_CPH,     MT_OXIMETER));
 
     // These are for formatting the headers for the first column
-    calcnames = {
-        { SC_UNDEFINED, "" },
-        { SC_MEDIAN, tr("%1 Median") },
-        { SC_AVG, tr("Average %1") },
-        { SC_WAVG, tr("Average %1") },
-        { SC_90P, tr("90% %1") }, // this gets converted to whatever the upper percentile is set to
-        { SC_MIN, tr("Min %1") },
-        { SC_MAX, tr("Max %1") },
-        { SC_CPH, tr("%1 Index") },
-        { SC_SPH, tr("% of time in %1") },
-    };
-    machinenames = {
-        { MT_UNKNOWN, STR_TR_Unknown },
-        { MT_CPAP, STR_TR_CPAP },
-        { MT_OXIMETER, STR_TR_Oximetry },
-        { MT_SLEEPSTAGE, STR_TR_SleepStage },
+    calcnames[SC_UNDEFINED] = "";
+    calcnames[SC_MEDIAN] = tr("%1 Median");
+    calcnames[SC_AVG] = tr("Average %1");
+    calcnames[SC_WAVG] = tr("Average %1");
+    calcnames[SC_90P] = tr("90% %1"); // this gets converted to whatever the upper percentile is set to
+    calcnames[SC_MIN] = tr("Min %1");
+    calcnames[SC_MAX] = tr("Max %1");
+    calcnames[SC_CPH] = tr("%1 Index");
+    calcnames[SC_SPH] = tr("% of time in %1");
+
+    machinenames[MT_UNKNOWN] = STR_TR_Unknown;
+    machinenames[MT_CPAP] = STR_TR_CPAP;
+    machinenames[MT_OXIMETER] = STR_TR_Oximetry;
+    machinenames[MT_SLEEPSTAGE] = STR_TR_SleepStage;
 //        { MT_JOURNAL, STR_TR_Journal },
 //        { MT_POSITION, STR_TR_Position },
-    };
 
 }
 
diff --git a/sleepyhead/translation.cpp b/sleepyhead/translation.cpp
index f9d5f823..8a1a17a2 100644
--- a/sleepyhead/translation.cpp
+++ b/sleepyhead/translation.cpp
@@ -22,23 +22,31 @@
 #include <QSettings>
 #include <QTranslator>
 
+#ifndef nullptr
+#define nullptr NULL
+#endif
+
 #include "translation.h"
 
 void initTranslations(QSettings & settings) {
 
-
-    QStringList welcome={"Welcome", "Welkom", "Willkommen", "Bienvenue", u8"歡迎", u8"ようこそ!"};
+    QStringList welcome;
+    welcome.push_back("Welcome");
+    welcome.push_back("Welkom");
+    welcome.push_back("Willkommen");
+    welcome.push_back("Bienvenue");
+    welcome.push_back("歡迎");
+    welcome.push_back("ようこそ!");
 
     // (Ordinary character sets will just use the name before the first '.' in the filename.)
     // (This u8 stuff deliberately kills Qt4.x build support - if you know another way feel free to
     //  change it, but Qt4 support is still going to die sooner or later)
     // Add any languages with special character set needs to this list
-    QHash<QString, QString> langNames={
-        { "cn", u8"漢語繁體字" },
-        { "es", u8"Español" },
-        { "bg", u8"български" },
-        { "fr", u8"Français" },
-    };
+    QHash<QString, QString> langNames;
+    langNames["cn"]="漢語繁體字";
+    langNames["es"] = "Español";
+    langNames["bg"] = "български";
+    langNames["fr"] = "Français";
     // CHECK: Will the above break with MS VisualC++ compiler?
 
     QHash<QString, QString> langFiles;
@@ -90,7 +98,7 @@ void initTranslations(QSettings & settings) {
         QFont font;
         font.setPointSize(25);
         langsel.setFont(font);
-        langsel.setWindowTitle(u8"Language / Taal / Sprache / Langue / 语言 / ... ");
+        langsel.setWindowTitle("Language / Taal / Sprache / Langue / 语言 / ... ");
         QHBoxLayout lang_layout(&langsel);
 
         QLabel img;
diff --git a/sleepyhead/updateparser.cpp b/sleepyhead/updateparser.cpp
index 8abed971..dfeb518c 100644
--- a/sleepyhead/updateparser.cpp
+++ b/sleepyhead/updateparser.cpp
@@ -13,6 +13,11 @@
 
 #include "updateparser.h"
 
+#ifndef nullptr
+#define nullptr NULL
+#endif
+
+
 Update::Update()
 {
     size = 0;