src/index.js
function append_to(config, obj) {
		if(config === undefined) {
			//console.warn('Warning: config internal append_to() called with undefined first argument!');
			config = {};
		} else if(! (config && (typeof config === 'object')) ) {
			throw new TypeError("Attempt to append an object into " + (typeof config) + "!");
		}
		if(! (obj && (typeof obj === 'object')) ) {
			 throw new TypeError("Attempt to append non-object (" + (typeof obj) + ")!");
		}
		Object.keys(obj).forEach(function(key) {
			var new_value = obj[key];

			// Arrays
			if(new_value && (new_value instanceof Array)) {
				if(config[key] && (config[key] instanceof Array)) {
					config[key] = config[key].concat(new_value);
				} else if(config[key] === undefined) {
					config[key] = [].concat(new_value);
				} else {
					throw new TypeError("Attempt to append an array into " + (typeof config[key]) + "!");
				}
				return;
			}

			// Objects
			if(new_value && (typeof new_value === 'object')) {
				config[key] = append_to(config[key], new_value).config;
				return;
			}

			// Other
			config[key] = new_value;
		});
		return {"and": append_to.bind({}, config), "config":config};
	}
function append_to(config, obj) {
		if(config === undefined) {
			//console.warn('Warning: config internal append_to() called with undefined first argument!');
			config = {};
		} else if(! (config && (typeof config === 'object')) ) {
			throw new TypeError("Attempt to append an object into " + (typeof config) + "!");
		}
		if(! (obj && (typeof obj === 'object')) ) {
			 throw new TypeError("Attempt to append non-object (" + (typeof obj) + ")!");
		}
		Object.keys(obj).forEach(function(key) {
			var new_value = obj[key];

			// Arrays
			if(new_value && (new_value instanceof Array)) {
				if(config[key] && (config[key] instanceof Array)) {
					config[key] = config[key].concat(new_value);
				} else if(config[key] === undefined) {
					config[key] = [].concat(new_value);
				} else {
					throw new TypeError("Attempt to append an array into " + (typeof config[key]) + "!");
				}
				return;
			}

			// Objects
			if(new_value && (typeof new_value === 'object')) {
				config[key] = append_to(config[key], new_value).config;
				return;
			}

			// Other
			config[key] = new_value;
		});
		return {"and": append_to.bind({}, config), "config":config};
	}
/* Append config file into config object