added support for optional paramters. Changed Param annotation signature to be simpler