protected function merge(array &$base, array $overwrite) {
		foreach ($overwrite as $key => $value) {
			if (is_int($key)) {
				// add only if it doesn't exist
				if ( ! in_array($overwrite[$key], $base)) {
					$base[] = $overwrite[$key];
				}
			}
			else if (is_array($value)) {
				if (isset($base[$key]) && is_array($base[$key])) {
					$this->merge($base[$key], $value);
				}
				else { # does not exist or it's a non-array
					$base[$key] = $value;
				}
			}
			else { # not an array and not numeric key
				$base[$key] = $value;
			}
		}
	}