When programmers develop or maintain software, they instinctively sense that there are fragments of code that other developers implemented somewhere, and these code fragments could be reused if found. In this paper, we propose a novel solution that addresses the fundamental questions of searching, selecting, and synthesizing (S3 ) software based on the analysis of Application Programming Interface (API) units of abstractions that implement high-level concepts (e.g., the API call EncryptData implements a cryptographic concept). This paper outlines the details behind S3 , analyzes current challenges and describes evaluation plans.