Combining functionality and object-orientedness for natural language processing