adding generic programming construct.