used macros to greatly reduce member def size; made more members of the underlying C object read/write instead of read-only in preparation for merging