key now correctly an optional argument