#1 Added optional key parameter