enhanced constructor signature