render takes keys as vector instead of single key, more flexible