add key handling