accept keys as string too (@anderslime)