Refactored client to use a mixin pattern, added server specific function versioning