public function update($input)
	{
		$mapper = $this->getMapper();
		$admin  = $mapper->getAdmin();

		$model = $this->getModel();
		$this->setInput($input);

		// Field pre update
		foreach ($this->getMapper()->getFields() as $field) {
			$field->preUpdate();

			// Is this a multiple field?
			if ($field->isMultiple()) {
				$value = Value::encode(Config::get('bauhaus::admin.multiple-serializer'), $input[$field->getName()]);
				$this->setInputVariable($field->getName(), $value);
			}

			if ($field->hasSaving()) {
				$saving = $field->getSaving();
				$this->setInputVariable($field->getName(), $saving($input[$field->getName()]));
			}
		}

		// Model before update hook
		if (method_exists($admin, 'beforeUpdate')) {
			$admin->beforeUpdate($input);
		}

		// Validate
		if (property_exists($model, 'rules')) {
			$validator = Validator::make($this->getInput(), $model::$rules);
			if ($validator->fails()) {
				return $validator;
			}
		}

		// Model update hook
		if (method_exists($this->getMapper()->getAdmin(), 'update')) {
			$this->getMapper()->getAdmin()->update($this->getInput());
		} else {
			$model::find($this->getIdentifier())
				->update($this->getInput());
		}

		// Field post update
		foreach ($this->getMapper()->getFields() as $field) {
			$field->postUpdate($this->getInput());
		}

		// Model after update hook
		if (method_exists($admin, 'afterCreate')) {
			$result = $admin->afterUpdate($this->getInput());

			if ($result instanceof \Illuminate\Http\RedirectResponse) {
				$result->send();
			}
		}

		return $this;
	}