Thanks for the detailed and clear explanation, Morbus. But it sounds like this "new" flexibility is a result of hook_nodeapi() and hook_form_alter(), not CCK. Is that right? Rest assured I won't be trying to define any new node types when there are better ways to do it (e.g. Mark Fredrickson's comments). Perhaps I'm confusing two issues here. I'm worried more about having all nodes burdened with CCK's overhead than I am about not being able to have module-defined node types -- as long as there is a way to do what I need to do. For example, I have an old module which defines a new node type where every field in the node is new and unique to my module. It sounds like from Morbus' description, I can still do that without being able to define my own node types -- I can do it instead by "value adding" with hook_form_alter() and hook_nodeapi() my data and _behaviors_ onto an existing basic core node of some sort. That works for me -- if those basic nodes won't be dog slow when we start talking about proximity searching 10 million of them, for instance. Feel free to further "educate" me. :-) ..chrisxj