diff --git a/src/Constants.h b/src/Constants.h
index f353bf4e9477bf86c8a59ee628a1db27e9a0081a..9ac6ef8a5b2002010c5d3623a1a3e2ec04f5fe46 100644
--- a/src/Constants.h
+++ b/src/Constants.h
@@ -31,6 +31,4 @@ namespace Preferences {
     NSString * const WindowBehaviour = @"window_behaviour";
     /* KVO compliant */
     NSString * const Notifications = @"enable_notifications";
-
-    NSString * const ShowAdvanced = @"show_advanced";
 }
diff --git a/src/GeneralPrefsVC.mm b/src/GeneralPrefsVC.mm
index 30c72bc78debd8db9b233405c069594f0917ddb8..0e7e51f0b348d383f640d24da7c60f2ae18c794d 100644
--- a/src/GeneralPrefsVC.mm
+++ b/src/GeneralPrefsVC.mm
@@ -27,31 +27,42 @@
 #import "Constants.h"
 
 @interface GeneralPrefsVC ()
-@property (unsafe_unretained) IBOutlet NSTextField *historyChangedLabel;
-@property (unsafe_unretained) IBOutlet NSView *advancedGeneralSettings;
-@property (unsafe_unretained) IBOutlet NSButton *startUpButton;
-@property (unsafe_unretained) IBOutlet NSButton *toggleAutomaticUpdateCheck;
-@property (unsafe_unretained) IBOutlet NSPopUpButton *checkIntervalPopUp;
-@property (unsafe_unretained) IBOutlet NSView *sparkleContainer;
+@property (unsafe_unretained) IBOutlet NSTextField* historyChangedLabel;
+@property (unsafe_unretained) IBOutlet NSButton* startUpButton;
+@property (unsafe_unretained) IBOutlet NSButton* toggleAutomaticUpdateCheck;
+@property (unsafe_unretained) IBOutlet NSPopUpButton* checkIntervalPopUp;
+@property (unsafe_unretained) IBOutlet NSView* sparkleContainer;
+@property (unsafe_unretained) IBOutlet NSTextField* historyTextField;
+@property (unsafe_unretained) IBOutlet NSStepper* historyStepper;
+@property (unsafe_unretained) IBOutlet NSButton* historySwitch;
 
 @end
 
 @implementation GeneralPrefsVC
 @synthesize historyChangedLabel;
-@synthesize advancedGeneralSettings;
 @synthesize startUpButton;
 @synthesize toggleAutomaticUpdateCheck;
 @synthesize checkIntervalPopUp;
 @synthesize sparkleContainer;
+@synthesize historyTextField;
+@synthesize historyStepper;
+@synthesize historySwitch;
 
 - (void)loadView
 {
     [super loadView];
     [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:Preferences::HistoryLimit options:NSKeyValueObservingOptionNew context:NULL];
-    [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:Preferences::ShowAdvanced options:NSKeyValueObservingOptionNew context:NULL];
 
     [startUpButton setState:[self isLaunchAtStartup]];
 
+    int historyLimit = CategorizedHistoryModel::instance().historyLimit();
+    [historyTextField setStringValue:[NSString stringWithFormat:@"%d", historyLimit]];
+    [historyStepper setIntValue:historyLimit];
+
+    BOOL limited = CategorizedHistoryModel::instance().isHistoryLimited();
+    [historySwitch setState:limited];
+    [historyStepper setEnabled:limited];
+    [historyTextField setEnabled:limited];
 #if ENABLE_SPARKLE
     [sparkleContainer setHidden:NO];
     SUUpdater *updater = [SUUpdater sharedUpdater];
@@ -63,13 +74,11 @@
     [sparkleContainer setHidden:YES];
 #endif
 
-    //[advancedGeneralSettings setHidden:![[NSUserDefaults standardUserDefaults] boolForKey:Preferences::ShowAdvanced]];
 }
 
 - (void) dealloc
 {
     [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:Preferences::HistoryLimit];
-    [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:Preferences::ShowAdvanced];
 }
 
 - (IBAction)clearHistory:(id)sender {
@@ -77,14 +86,23 @@
     [historyChangedLabel setHidden:NO];
 }
 
+- (IBAction)toggleHistory:(id)sender {
+    CategorizedHistoryModel::instance().setHistoryLimited([sender state]);
+    int historyLimit = CategorizedHistoryModel::instance().historyLimit();
+    [historyTextField setStringValue:[NSString stringWithFormat:@"%d", historyLimit]];
+    [historyStepper setIntValue:historyLimit];
+    [historyChangedLabel setHidden:NO];
+    [historyStepper setEnabled:[sender state]];
+    [historyTextField setEnabled:[sender state]];
+}
+
 // KVO handler
 -(void)observeValueForKeyPath:(NSString *)aKeyPath ofObject:(id)anObject
                        change:(NSDictionary *)aChange context:(void *)aContext
 {
-    if (aKeyPath == Preferences::HistoryLimit) {
+    if ([aKeyPath isEqualToString:Preferences::HistoryLimit]) {
+        CategorizedHistoryModel::instance().setHistoryLimit([[aChange objectForKey: NSKeyValueChangeNewKey] integerValue]);
         [historyChangedLabel setHidden:NO];
-    } else if (aKeyPath == Preferences::ShowAdvanced) {
-        //[advancedGeneralSettings setHidden:[[aChange objectForKey: NSKeyValueChangeNewKey] boolValue]];
     }
 }
 
diff --git a/src/main.mm b/src/main.mm
index 075ee706949ca06aea27060c9d2bd8ba3fef3a44..fd412b7dfccb9c7f719af1417807d413a6e3802d 100644
--- a/src/main.mm
+++ b/src/main.mm
@@ -33,6 +33,7 @@
 #import <categorizedhistorymodel.h>
 #import <localhistorycollection.h>
 #import <numbercategorymodel.h>
+#import <callmodel.h>
 
 #import "backends/AddressBookBackend.h"
 #import "delegates/ImageManipulationDelegate.h"
@@ -62,6 +63,7 @@ int main(int argc, const char *argv[]) {
         }
     }
 
+    CallModel::instance();
     CategorizedHistoryModel::instance().addCollection<LocalHistoryCollection>(LoadOptions::FORCE_ENABLED);
 
     /* make sure basic number categories exist, in case user has no contacts
diff --git a/ui/Base.lproj/GeneralPrefs.xib b/ui/Base.lproj/GeneralPrefs.xib
index ab6def3aaf39541a0f0698145305ff66a7cb16be..d49bd234806de101cc4ce006e472d62a0afd1a91 100644
--- a/ui/Base.lproj/GeneralPrefs.xib
+++ b/ui/Base.lproj/GeneralPrefs.xib
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15B42" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8191"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="GeneralPrefsVC">
             <connections>
                 <outlet property="checkIntervalPopUp" destination="RYP-3d-PCa" id="JNO-GR-CV8"/>
                 <outlet property="historyChangedLabel" destination="Gyi-ID-Z3v" id="aoO-Fh-UCQ"/>
+                <outlet property="historyStepper" destination="QmA-ZI-ZL5" id="dDV-1G-rZs"/>
+                <outlet property="historySwitch" destination="DgD-2y-4g5" id="GYk-pz-jGT"/>
+                <outlet property="historyTextField" destination="tHZ-7Q-5iP" id="keP-y2-7Pg"/>
                 <outlet property="sparkleContainer" destination="yVO-jk-ay3" id="zni-hI-88D"/>
                 <outlet property="startUpButton" destination="1Nr-L4-fcd" id="veu-Hi-c7L"/>
                 <outlet property="toggleAutomaticUpdateCheck" destination="MCd-PD-kd7" id="rSB-ac-Nm2"/>
@@ -68,6 +71,9 @@
                         <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                         <font key="font" metaFont="system"/>
                     </buttonCell>
+                    <connections>
+                        <action selector="toggleHistory:" target="-2" id="TiP-Pw-MFu"/>
+                    </connections>
                 </button>
                 <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QmA-ZI-ZL5">
                     <rect key="frame" x="251" y="141" width="19" height="27"/>
@@ -87,7 +93,11 @@
                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                     </textFieldCell>
                     <connections>
-                        <binding destination="Sz0-vm-i3t" name="value" keyPath="values.history_limit" id="O2j-lT-MbR"/>
+                        <binding destination="Sz0-vm-i3t" name="value" keyPath="values.history_limit" id="4us-N3-vCf">
+                            <dictionary key="options">
+                                <bool key="NSContinuouslyUpdatesValue" value="YES"/>
+                            </dictionary>
+                        </binding>
                     </connections>
                 </textField>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nah-Jm-ZYB">
@@ -111,14 +121,6 @@
                         <action selector="clearHistory:" target="-2" id="yN7-bB-7EY"/>
                     </connections>
                 </button>
-                <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gyi-ID-Z3v">
-                    <rect key="frame" x="361" y="144" width="167" height="17"/>
-                    <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="(Applied on application restart)" id="OTl-vx-S43">
-                        <font key="font" metaFont="smallSystem"/>
-                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                        <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                    </textFieldCell>
-                </textField>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="j3T-5j-Fom">
                     <rect key="frame" x="38" y="303" width="94" height="17"/>
                     <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Interruptions" id="Rzy-Gh-3wQ">
@@ -192,9 +194,21 @@
                         <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                     </textFieldCell>
                 </textField>
+                <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gyi-ID-Z3v">
+                    <rect key="frame" x="310" y="148" width="169" height="14"/>
+                    <constraints>
+                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="165" id="wfZ-X2-WX8"/>
+                    </constraints>
+                    <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="(Applied on application restart)" id="OTl-vx-S43">
+                        <font key="font" metaFont="smallSystem"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
             </subviews>
             <constraints>
                 <constraint firstItem="Is4-pD-LOT" firstAttribute="leading" secondItem="lIm-zX-RIV" secondAttribute="trailing" constant="8" id="Apx-HB-LIX"/>
+                <constraint firstItem="Gyi-ID-Z3v" firstAttribute="leading" secondItem="nah-Jm-ZYB" secondAttribute="trailing" constant="8" id="EYY-WC-fCM"/>
                 <constraint firstItem="Oth-up-2k2" firstAttribute="leading" secondItem="Is4-pD-LOT" secondAttribute="leading" id="Fdb-2p-ULe"/>
                 <constraint firstItem="nah-Jm-ZYB" firstAttribute="leading" secondItem="QmA-ZI-ZL5" secondAttribute="trailing" constant="8" id="JJi-0O-nUi"/>
                 <constraint firstItem="QmA-ZI-ZL5" firstAttribute="leading" secondItem="tHZ-7Q-5iP" secondAttribute="trailing" constant="8" id="YPs-UE-IFi"/>