public function storeCrud(StoreRequest $request = null)
	{
		// SECURITY:
		// if add_permission is false, abort
		if (isset($this->crud['add_permission']) && !$this->crud['add_permission']) {
			abort(403, 'Not allowed.');
		}

		// compress the fake fields into one field
		$model = $this->crud['model'];
		$values_to_store = $this->compactFakeFields(\Request::all());
		$item = $model::create($values_to_store);

		// if it's a relationship with a pivot table, also sync that
		$this->prepareFields();
		foreach ($this->crud['fields'] as $k => $field) {
			if (isset($field['pivot']) && $field['pivot']==true && \Request::has($field['name']))
			{
				$model::find($item->id)->$field['name']()->attach(\Request::input($field['name']));
			}
		}

		// show a success message
		\Alert::success(trans('crud.insert_success'))->flash();

		// redirect the user where he chose to be redirected
		switch (\Request::input('redirect_after_save')) {
			case 'current_item_edit':
				return \Redirect::to($this->crud['route'].'/'.$item->id.'/edit');
				break;

			default:
				return \Redirect::to(\Request::input('redirect_after_save'));
				break;
		}
	}