Added empty? to allow lists to be used as arguments, also introduced a map to hold keywords for lookup