Better support for hyper-parameter which takes primitive or primitives as input(s)
We should probably define a special subclass for hyper-parameter which takes primitive(s) as input(s). So that more constraints can be put on them, not just base class type.