Use universal type

The use of universal types adds a layer of abstraction for the creation of new plugins. It will also ease their creation.