Exploring molecular recognition by combinatorial and rational approaches