Highly inspired by drupal6 cck module mechanics