add discover() function