'handler is only used if value is not string nor unicode, prototype:
def handler(value) -> str/unicode'

def __init__(self, key, priority, description, text_handler=None, type=None, filter=None, conversion=None):

    assert (MIN_PRIORITY <= priority <= MAX_PRIORITY)
    assert isinstance(description, unicode)
    self.metadata = None
    self.key = key
    self.description = description
    self.values = []
    if (type and (not isinstance(type, (tuple, list)))):
        type = (type,)
    self.type = type
    self.text_handler = text_handler
    self.filter = filter
    self.priority = priority
    self.conversion = conversion
