updated interface to use special forms for "plugin" and "value" and force custom factories to use plugin with type object