Added support for multiple and no functors
Added support for carrying along generic datatype