Reorganize to be client-oriented