I have a function, which puts data into a database, called `new_item()`:

```
def new_item(self, item, **optional):

```

After sending a web form, a function should check the user input and then use this function to put the user input into the database (I'm using Flask, function name is `add_item()`):

```
Market.new_item([request.form['title'], 
                 session.get('user_id'), 
                 request.form['category']], 
                {'desc': request.form['desc'], 
                 'place': request.form['place'], 
                 'price': request.form['price'], 
                 'ono': ono})

```

But I get this error:

```
File X, line 99, in add_item
'ono': ono})
TypeError: new_item() takes exactly 2 arguments (3 given)

```

Fur debugging I print this statement right before I call the function `add_item`. Console output is:

```
([u'iPhone 5', '791465667539154', u'2'], 
 {'price': u'99', 'place': u'Bossental', 'ono': True, 'desc': u'My brand new iPhone'})

```

I really don't know what's wrong. I never worked with `**kwargs` before; is that related to the problem?