few todos
wrong divide
don't complain about list patterns being already matched