Creating an API for modularity and ease of code-reuse; bi-directionality of clients now working