implemented keyword search