better keyword parsing