added tentative framework and base case implementation