diff --git a/lib/FallbackMemberBuilder.js b/lib/FallbackMemberBuilder.js
new file mode 100644
index 0000000..5408268
--- /dev/null
+++ b/lib/FallbackMemberBuilder.js
@@ -0,0 +1,77 @@
+/**
+ * Handles building members (properties, methods) in a pre-ES5 environment
+ *
+ * Copyright (C) 2010 Mike Gerwitz
+ *
+ * This file is part of ease.js.
+ *
+ * ease.js is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ *
+ * @author Mike Gerwitz
+ * @package core
+ */
+
+/**
+ * Supertype
+ */
+var MemberBuilder = require( __dirname + '/MemberBuilder' );
+
+/**
+ * Responsible for building class members
+ */
+module.exports = exports = function FallbackMemberBuilder(
+ wrap_method, wrap_override
+)
+{
+ // permit omitting 'new' keyword
+ if ( !( this instanceof module.exports ) )
+ {
+ return new module.exports( wrap_method, wrap_override );
+ }
+
+ // invoke parent constructor
+ module.exports.prototype.constructor.call( this,
+ wrap_method, wrap_override
+ );
+};
+
+// inherit from MemberBuilder
+module.exports.prototype = new MemberBuilder();
+module.exports.constructor = module.exports;
+
+
+/**
+ * Getters are unsupported in a pre-ES5 environment
+ *
+ * Simply throw an exception, as it clearly represents that the developer did
+ * not account for the possibility that their software may have been executed in
+ * a pre-ES5 environment.
+ */
+exports.prototype.buildGetter = function()
+{
+ throw Error( 'Getters are unsupported in this environment' );
+};
+
+
+/**
+ * Setters are unsupported in a pre-ES5 environment
+ *
+ * Simply throw an exception, as it clearly represents that the developer did
+ * not account for the possibility that their software may have been executed in
+ * a pre-ES5 environment.
+ */
+exports.prototype.buildSetter = function()
+{
+ throw Error( 'Setters are unsupported in this environment' );
+};
diff --git a/test/FallbackMemberBuilderTest.js b/test/FallbackMemberBuilderTest.js
new file mode 100644
index 0000000..c719177
--- /dev/null
+++ b/test/FallbackMemberBuilderTest.js
@@ -0,0 +1,84 @@
+/**
+ * Tests fallback method builder (for pre-ES5 environment)
+ *
+ * Note that this test case can also be run in an ES5 environment.
+ *
+ * Copyright (C) 2010 Mike Gerwitz
+ *
+ * This file is part of ease.js.
+ *
+ * ease.js is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ *
+ * @author Mike Gerwitz
+ * @package test
+ */
+
+require( './common' ).testCase(
+{
+ setUp: function()
+ {
+ // stub factories used for testing
+ var stubFactory = this.require( 'MethodWrapperFactory' )(
+ function( func ) { return func; }
+ );
+
+ this.sut = this.require( 'FallbackMemberBuilder' )(
+ stubFactory, stubFactory
+ );
+ },
+
+
+ 'Inherits from MemberBuilder': function()
+ {
+ this.assertOk( this.sut instanceof this.require( 'MemberBuilder' ),
+ 'FallbackMemberBuilder should inherit from MemberBuilder'
+ );
+ },
+
+
+ /**
+ * Getters and setters are unsupported in pre-ES5 environments
+ */
+ 'buildGetter() and buildSetter() methods throw exceptions': function()
+ {
+ // getter test
+ try
+ {
+ this.sut.buildGetter();
+ this.fail( 'Exception should have been called (getter)' );
+ }
+ catch ( e )
+ {
+ this.assertOk(
+ e.message.match( /unsupported/ ),
+ 'Incorrect exception thrown (getter)'
+ );
+ }
+
+ // setter test
+ try
+ {
+ this.sut.buildSetter();
+ this.fail( 'Exception should have been called (getter)' );
+ }
+ catch ( e )
+ {
+ this.assertOk(
+ e.message.match( /unsupported/ ),
+ 'Incorrect exception thrown (setter)'
+ );
+ }
+ },
+});
+
diff --git a/test/MemberBuilder-MethodTest.js b/test/MemberBuilder-MethodTest.js
index 228adc0..73f5117 100644
--- a/test/MemberBuilder-MethodTest.js
+++ b/test/MemberBuilder-MethodTest.js
@@ -28,7 +28,7 @@ var common = require( './common' ),
util = common.require( 'util' ),
// stub factories used for testing
- stubFactory= common.require( '/MethodWrapperFactory' )(
+ stubFactory = common.require( '/MethodWrapperFactory' )(
function( func ) { return func; }
),