re-structured the codebase, began implementing the client