diff --git a/ampersand-state.js b/ampersand-state.js
index <HASH>..<HASH> 100644
--- a/ampersand-state.js
+++ b/ampersand-state.js
@@ -12,9 +12,9 @@ function Base(attrs, options) {
     this._cache = {};
     this._previousAttributes = {};
     this._events = {};
+    if (attrs) this.set(attrs, _.extend({silent: true, initial: true}, options));
     this.changed = {};
     this._changed = this.changed; //legacy
-    if (attrs) this.set(attrs, _.extend({silent: true, initial: true}, options));
     if (options.init !== false) this.initialize.apply(this, arguments);
 }
 
diff --git a/test/basics.js b/test/basics.js
index <HASH>..<HASH> 100644
--- a/test/basics.js
+++ b/test/basics.js
@@ -25,6 +25,13 @@ test('init with values', function (t) {
     t.end();
 });
 
+test('after initialized change should be empty until a set op', function (t) {
+    var person = new Person({name: 'phil'});
+    t.deepEqual(person.changed, {});
+    t.notOk(person.changedAttributes());
+    t.end();
+});
+
 test('extended object maintains existing props', function (t) {
     var AwesomePerson = Person.extend({
         props: {
BBTest - initializing a model shouldn’t count as a “change”