<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>InternalDefines.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,3 @@
-Properties.m
 build
 *.pbxuser
 *.mode1v3</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -3,34 +3,18 @@
 
 @class DWXMLRPCRequest;
 @interface DWJournal ()
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readwrite) NSString *username;
-@property (nonatomic, retain, readwrite) DWUser *user;
-@property (nonatomic, retain, readwrite) NSDictionary *tags;
-
-@property (nonatomic, readwrite) BOOL loaded;
-@property (nonatomic, readwrite) BOOL inProgress;
-#endif
-
 
 -(BOOL)maybeDone;
 -(BOOL)parseTagResponse:(XMLRPCResponse *)resp;
 
 -(void)tagsRequest:(DWXMLRPCRequest *)req withArg:(id)arg error:(NSError *)error orResponse:(XMLRPCResponse *)resp;
-@end
-
-@interface DWJournal (GenPropsI)
-
--(void)setUser:(DWUser *)_user;
--(void)setUsername:(NSString *)_username;
--(void)setTags:(NSDictionary *)_tags;
 
 -(void)setLoaded:(BOOL)_loaded;
 -(void)setInProgress:(BOOL)_inProgress;
-
 @end
 
 @interface DWJournal (Internal)
 
 -(void)callDelegateMethodWasFailure:(BOOL)_failed;
+
 @end
\ No newline at end of file</diff>
      <filename>DWJournal+Internal.h</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@
 
 @class DWUser;
 @interface DWJournal : NSObject {
+@private    
     DWUser *user;
     NSString *username;
     NSDictionary *tags;
@@ -14,27 +15,15 @@
     
     int _failed;
     int _succeeded;
+    
+    NSDictionary *____raw_tags;
 }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readonly) DWUser *user;
-@property (nonatomic, retain, readonly) NSString *username;
-@property (nonatomic, retain, readonly) NSDictionary *tags;
-
-@property (nonatomic, assign) id&lt;DWUserDelegate&gt; delegate;
-
-@property (nonatomic, readonly) BOOL loaded;
-@property (nonatomic, readonly) BOOL inProgress;
-#endif
 
 -(id)initWithUsername:(NSString *)name andUser:(DWUser *)user;
 +(DWJournal *)journalWithUsername:(NSString *)name andUser:(DWUser *)user;
 
 -(BOOL)load;
 
-@end
-
-@interface DWJournal (GenProps)
-
 -(DWUser *)user;
 -(NSString *)username;
 -(NSDictionary *)tags;</diff>
      <filename>DWJournal.h</filename>
    </modified>
    <modified>
      <diff>@@ -6,15 +6,11 @@
 #import &quot;DWXMLRPCRequest.h&quot;
 #import &quot;DWTag.h&quot;
 #import &lt;XMLRPC/XMLRPC.h&gt;
+#import &quot;InternalDefines.h&quot;
 
 #define NUM_TASKS 1
 
 @implementation DWJournal
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@dynamic user, username, tags;
-@dynamic delegate;
-@dynamic loaded,inProgress;
-#endif
 
 - (void) dealloc
 {
@@ -38,8 +34,8 @@
 -(id)initWithUsername:(NSString *)_name andUser:(DWUser *)_user {
     self = [self init];
     if (self != nil) {
-        self.username = _name;
-        self.user = _user;
+        username = [_name retain];
+        user = [_user retain];
     }
     return self;
 }
@@ -85,6 +81,7 @@
 -(BOOL)parseTagResponse:(XMLRPCResponse *)resp {
     NSMutableDictionary *_tags = [NSMutableDictionary dictionary];
     NSDictionary *tag_data = [[resp object] objectForKey:@&quot;tags&quot;];
+    ____raw_tags = [[resp object] retain];
     if ( tag_data == nil ) return NO;
     {
         NSEnumerator *enumerator = [tag_data objectEnumerator];
@@ -94,7 +91,7 @@
             [_tags setObject:tag forKey:tag.name];
         }
     }
-    self.tags = _tags;
+    tags = [_tags copy];
     return YES;
 }
 
@@ -107,4 +104,22 @@
     }
     return YES;
 }
+
+#pragma mark Getters/Setters
+
+-(DWUser *)user { return user; }
+
+-(NSString *)username { return username; }
+
+-(NSDictionary *)tags { return tags; }
+
+-(id&lt;DWUserDelegate&gt;)delegate { return delegate; }
+-(void)setDelegate:(id&lt;DWUserDelegate&gt;)val { SETTER_ASSIGN(delegate); }
+
+-(BOOL)loaded { return loaded; }
+-(void)setLoaded:(BOOL)val { SETTER_ASSIGN(loaded); }
+
+-(BOOL)inProgress { return inProgress; }
+-(void)setInProgress:(BOOL)val { SETTER_ASSIGN(inProgress); }
+
 @end</diff>
      <filename>DWJournal.m</filename>
    </modified>
    <modified>
      <diff>@@ -7,20 +7,10 @@
     
     NSString *securityLevel;
 }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readonly) NSString *name;
-@property (nonatomic, readonly) BOOL display;
-@property (nonatomic, readonly) int uses;
-@property (nonatomic, retain, readonly) NSString *securityLevel;
-#endif
 
 +(DWTag *)tagWithDictionary:(NSDictionary *)data;
 -(id)initWithDictionary:(NSDictionary *)data;
 
-@end
-
-@interface DWTag (GenProps)
-
 -(NSString *)name;
 -(BOOL)display;
 -(int)uses;</diff>
      <filename>DWTag.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,30 +1,6 @@
 #import &quot;DWTag.h&quot;
 
-@interface DWTag ()
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readwrite) NSString *name;
-@property (nonatomic, readwrite) BOOL display;
-@property (nonatomic, readwrite) int uses;
-@property (nonatomic, retain, readwrite) NSString *securityLevel;
-#endif
-
-@end
-
-@interface DWTag (GenPropsI)
-
--(void)setName:(NSString *)val;
--(void)setDisplay:(BOOL)val;
--(void)setUses:(int)val;
--(void)setSecurityLevel:(NSString *)val;
-
-@end
-
 @implementation DWTag
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@dynamic name;
-@dynamic display,uses;
-@dynamic securityLevel;
-#endif
 
 - (void) dealloc
 {
@@ -33,15 +9,6 @@
     [super dealloc];
 }
 
-
--(void)setName:(NSString *)_value {
-    [self willChangeValueForKey:@&quot;name&quot;];
-    [_value retain];
-    [name release];
-    name = _value;
-    [self didChangeValueForKey:@&quot;name&quot;];
-}
-
 +(DWTag *)tagWithDictionary:(NSDictionary *)data {
     return [[[DWTag alloc] initWithDictionary:data] autorelease];
 }
@@ -49,13 +16,21 @@
 -(id)initWithDictionary:(NSDictionary *)data {
     self = [super init];
     if (self != nil) {
-        self.name = [[data objectForKey:@&quot;name&quot;] stringValue];
-        self.display = [[data objectForKey:@&quot;display&quot;] boolValue];
-        self.uses = [[data objectForKey:@&quot;uses&quot;] intValue];
+        name = [[[data objectForKey:@&quot;name&quot;] stringValue] retain];
         
-        self.securityLevel = [[data objectForKey:@&quot;security_level&quot;] stringValue];
+        display = [[data objectForKey:@&quot;display&quot;] boolValue];
+        uses = [[data objectForKey:@&quot;uses&quot;] intValue];
+        
+        securityLevel = [[[data objectForKey:@&quot;security_level&quot;] stringValue] retain];
     }
     return self;
 }
 
+#pragma mark Getters/Setters
+
+-(NSString *)name { return name; }
+-(BOOL)display { return display; }
+-(int)uses { return uses; }
+-(NSString *)securityLevel { return securityLevel; }
+
 @end</diff>
      <filename>DWTag.m</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@
 
 @class DWUserpic;
 @interface DWUser : DWJournal {
+@private
     NSString *md5Password;
     NSURL *endpointURL;
     
@@ -19,22 +20,6 @@
     DWUserpic *defaultUserpic;
     NSDictionary *journals;
 }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain) NSString *md5Password;
-@property (nonatomic, retain) NSURL *endpointURL;
-
-@property (nonatomic, readonly) BOOL loggedIn;
-@property (nonatomic, readonly) BOOL usernameInvalid;
-@property (nonatomic, readonly) BOOL passwordInvalid;
-
-@property (nonatomic, retain, readonly) NSNumber *faultCode;
-@property (nonatomic, retain, readonly) NSString *faultString;
-
-@property (nonatomic, retain, readonly) NSString *fullName;
-@property (nonatomic, retain, readonly) NSDictionary *userpics;
-@property (nonatomic, retain, readonly) DWUserpic *defaultUserpic;
-@property (nonatomic, retain, readonly) NSDictionary *journals;
-#endif
 
 +(DWUser *)userWithUsername:(NSString *)username andPassword:(NSString *)password;
 +(DWUser *)userWithUsername:(NSString *)username andHashedPassword:(NSString *)password;
@@ -43,9 +28,7 @@
 -(id)initWithUsername:(NSString *)username andHashedPassword:(NSString *)password;
 
 -(BOOL)login;
-@end
 
-@interface DWUser (GenProps)
 -(NSString *)md5Password;
 -(void)setMd5Password:(NSString *)val;
 </diff>
      <filename>DWUser.h</filename>
    </modified>
    <modified>
      <diff>@@ -5,28 +5,12 @@
 #import &quot;DWUserpic.h&quot;
 #import &quot;DWJournal.h&quot;
 #import &quot;DWJournal+Internal.h&quot;
-
+#import &quot;InternalDefines.h&quot;
 
 @interface DWUser ()
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, readwrite) BOOL loggedIn;
-@property (nonatomic, readwrite) BOOL usernameInvalid;
-@property (nonatomic, readwrite) BOOL passwordInvalid;
-
-@property (nonatomic, retain, readwrite) NSNumber *faultCode;
-@property (nonatomic, retain, readwrite) NSString *faultString;
-
-@property (nonatomic, retain, readwrite) NSString *fullName;
-@property (nonatomic, retain, readwrite) NSDictionary *userpics;
-@property (nonatomic, retain, readwrite) DWUserpic *defaultUserpic;
-@property (nonatomic, retain, readwrite) NSDictionary *journals;
-#endif
-
 -(BOOL)parseLoginResponse:(XMLRPCResponse *)response;
 -(void)loginRequest:(DWXMLRPCRequest *)req withArg:(id)arg error:(NSError *)error orResponse:(XMLRPCResponse *)resp;
-@end
 
-@interface DWUser (GenPropsI)
 -(void)setLoggedIn:(BOOL)val;
 -(void)setUsernameInvalid:(BOOL)val;
 -(void)setPasswordInvalid:(BOOL)val;
@@ -41,12 +25,6 @@
 @end
 
 @implementation DWUser
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@dynamic md5Password, endpointURL;
-@dynamic usernameInvalid, passwordInvalid, loggedIn;
-@dynamic faultCode, faultString;
-@dynamic fullName, userpics, defaultUserpic, journals;
-#endif
 
 -(void)dealloc {
     [md5Password release];
@@ -78,7 +56,7 @@
 }
 
 -(id)initWithUsername:(NSString *)_username andHashedPassword:(NSString *)password {
-    self = [super init];
+    self = [super initWithUsername:_username andUser:nil];
     if (self != nil) {
         self.usernameInvalid = NO;
         self.passwordInvalid = NO;
@@ -86,7 +64,6 @@
         self.inProgress = NO;
         self.endpointURL = [NSURL URLWithString:@&quot;http://www.dreamwidth.org/interface/xmlrpc&quot;];
         
-        self.username = _username;
         self.md5Password = password;
     }
     return self;
@@ -116,13 +93,6 @@
 
 #pragma mark Internal
 
--(DWUser *)user {
-    return self;
-}
-
--(void)setUser:(DWUser *)user {
-    return;
-}
 
 -(void)callDelegateMethodWasFailure:(BOOL)failed {
     [super callDelegateMethodWasFailure:failed];
@@ -245,4 +215,41 @@
     }
 }
 
+#pragma mark Getters/Setters
+
+// From DWJournal
+-(DWUser *)user { return self; }
+
+-(NSString *)md5Password { return md5Password; }
+-(void)setMd5Password:(NSString *)val { SETTER_RETAIN(md5Password); }
+
+-(NSURL *)endpointURL { return endpointURL; }
+-(void)setEndpointURL:(NSURL *)val { SETTER_RETAIN(endpointURL); }
+
+-(BOOL)loggedIn { return loggedIn; }
+-(void)setLoggedIn:(BOOL)val { SETTER_ASSIGN(loggedIn); }
+
+-(BOOL)usernameInvalid { return usernameInvalid; }
+-(void)setUsernameInvalid:(BOOL)val { SETTER_ASSIGN(usernameInvalid); }
+
+-(BOOL)passwordInvalid { return passwordInvalid; }
+-(void)setPasswordInvalid:(BOOL)val { SETTER_ASSIGN(passwordInvalid); }
+
+-(NSNumber *)faultCode { return faultCode; }
+-(void)setFaultCode:(NSNumber *)val { SETTER_RETAIN(faultCode); }
+
+-(NSString *)faultString { return faultString; }
+-(void)setFaultString:(NSString *)val { SETTER_RETAIN(faultString); }
+
+-(NSString *)fullName { return fullName; }
+-(void)setFullName:(NSString *)val { SETTER_RETAIN(fullName); }
+-(NSDictionary *)userpics { return userpics; }
+-(void)setUserpics:(NSDictionary *)val { SETTER_RETAIN(userpics); }
+
+-(DWUserpic *)defaultUserpic { return defaultUserpic; }
+-(void)setDefaultUserpic:(DWUserpic *)val { SETTER_RETAIN(defaultUserpic); }
+
+-(NSDictionary *)journals { return journals; }
+-(void)setJournals:(NSDictionary *)val { SETTER_RETAIN(journals); }
+
 @end</diff>
      <filename>DWUser.m</filename>
    </modified>
    <modified>
      <diff>@@ -1,22 +1,16 @@
 #import &lt;Cocoa/Cocoa.h&gt;
 
 @interface DWUserpic : NSObject {
+@private
     NSURL *url;
-    NSSet *keywords;
+    NSMutableSet *keywords;
 }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readonly) NSURL *url;
-@property (nonatomic, retain, readonly) NSSet *keywords;
-#endif
 
 -(id)initWithURL:(NSURL *)url;
 +(DWUserpic *)userpicWithURL:(NSURL *)url;
 
 -(void)addKeyword:(NSString *)keyword;
 
-@end
-
-@interface DWUserpic (GenProps)
 -(NSURL *)url;
 -(NSSet *)keywords;
 @end
\ No newline at end of file</diff>
      <filename>DWUserpic.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,7 @@
 #import &quot;DWUserpic.h&quot;
-
-@interface DWUserpic ()
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readwrite) NSURL *url;
-@property (nonatomic, retain, readwrite) NSSet *keywords;
-#endif
-@end
-
-@interface DWUserpic (GenPropsI)
--(void)setUrl:(NSURL *)val;
--(void)setKeywords:(NSSet *)val;
-@end
+#import &quot;InternalDefines.h&quot;
 
 @implementation DWUserpic
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@dynamic url, keywords;
-#endif
 
 -(void)dealloc {
     [url release];
@@ -27,8 +13,8 @@
 - (id) initWithURL:(NSURL *)_url {
     self = [super init];
     if (self != nil) {
-        self.url = _url;
-        self.keywords = [NSMutableSet set];
+        url = [_url retain];
+        keywords = [[NSMutableSet alloc] init];
     }
     return self;
 }
@@ -38,7 +24,12 @@
 }
 
 -(void)addKeyword:(NSString *)keyword {
-    [(NSMutableSet *)self.keywords addObject:keyword];
+    [keywords addObject:keyword];
 }
 
+#pragma mark Getters/Setters
+
+-(NSURL *)url { return url; }
+-(NSSet *)keywords { return [[keywords copy] autorelease]; }
+
 @end</diff>
      <filename>DWUserpic.m</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@
 
 @class DWUser;
 @interface DWXMLRPCRequest : NSObject&lt;XMLRPCConnectionDelegate&gt; {
+@private
     DWUser *user;
     NSString *method;
     NSDictionary *args;
@@ -20,19 +21,6 @@
     BOOL complete;
     BOOL failed;
 }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readonly) DWUser *user;
-@property (nonatomic, retain, readonly) NSString *method;
-@property (nonatomic, retain, readonly) NSDictionary *args;
-
-@property (nonatomic, readonly) id&lt;DWXMLRPCRequestDelegate&gt; delegate;
-@property (nonatomic, readonly) id object;
-@property (nonatomic, readonly) SEL selector;
-@property (nonatomic, readonly) id cbArg;
-
-@property (nonatomic, readonly) BOOL complete;
-@property (nonatomic, readonly) BOOL failed;
-#endif
 
 +(DWXMLRPCRequest *)asyncRequestFor:(DWUser *)user withMethod:(NSString *)method andArgs:(NSDictionary *)args withDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)what andArg:(id)arg;
 +(DWXMLRPCRequest *)asyncRequestFor:(DWUser *)user withMethod:(NSString *)method andArgs:(NSDictionary *)args withObject:(id)what andSelector:(SEL)sel andArg:(id)arg;
@@ -40,10 +28,6 @@
 +(BOOL)synchronous;
 +(void)setSynchronous:(BOOL)value;
 
-@end
-
-@interface DWXMLRPCRequest (GenProps)
-
 -(DWUser *)user;
 -(NSString *)method;
 -(NSDictionary *)args;
@@ -56,4 +40,4 @@
 -(BOOL)complete;
 -(BOOL)failed;
 
-@end
+@end
\ No newline at end of file</diff>
      <filename>DWXMLRPCRequest.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,57 +1,29 @@
 #import &quot;DWXMLRPCRequest.h&quot;
 #import &quot;DWUser.h&quot;
 #import &quot;DWUser+Internal.h&quot;
+#import &quot;InternalDefines.h&quot;
 
 static BOOL _synchronous;
 
 // FIXME: Test this
 @interface DWXMLRPCRequest ()
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@property (nonatomic, retain, readwrite) DWUser *user;
-@property (nonatomic, retain, readwrite) NSString *method;
-@property (nonatomic, retain, readwrite) NSDictionary *args;
-
-@property (nonatomic, assign, readwrite) id&lt;DWXMLRPCRequestDelegate&gt; delegate;
-@property (nonatomic, assign, readwrite) id object;
-@property (nonatomic, assign, readwrite) SEL selector;
-
-@property (nonatomic, assign, readwrite) id cbArg;
-
-@property (nonatomic, retain) XMLRPCRequest *request;
-
-@property (nonatomic, readwrite) BOOL complete;
-@property (nonatomic, readwrite) BOOL failed;
-#endif
-
 -(void)call;
 -(void)callRequest:(XMLRPCRequest *)req;
-@end
-
-@interface DWXMLRPCRequest (GenPropsI)
--(void)setUser:(DWUser *)val;
--(void)setMethod:(NSString *)val;
--(void)setArgs:(NSDictionary *)val;
-
--(void)setDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)val;
--(void)setObject:(id)val;
--(void)setSelector:(SEL)val;
-
--(void)setCbArg:(id)val;
 
 -(XMLRPCRequest *)request;
 -(void)setRequest:(XMLRPCRequest *)val;
 
+-(void)setArgs:(NSDictionary *)val;
+
 -(void)setComplete:(BOOL)val;
 -(void)setFailed:(BOOL)val;
 
+-(id)initAsyncRequest:(DWUser *)_user withMethod:(NSString *)_method andArgs:(NSDictionary *)_args withDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)_what andArg:(id)_arg;
+-(id)initAsyncRequest:(DWUser *)_user withMethod:(NSString *)_method andArgs:(NSDictionary *)_args withObject:(id)_what andSelector:(SEL)_sel andArg:(id)_arg;
+
 @end
 
 @implementation DWXMLRPCRequest
-#if (MAC_OS_X_VERSION_MIN_REQUIRED &gt; MAC_OS_X_VERSION_10_4)
-@dynamic user, method, args;
-@dynamic delegate, object, selector, cbArg;
-@dynamic request, complete, failed;
-#endif
 
 -(void)dealloc
 {
@@ -74,8 +46,7 @@ static BOOL _synchronous;
 
 #pragma mark Public
 
-- (id) init
-{
+- (id) init {
     self = [super init];
     if (self != nil) {
         hasChallenge = NO;
@@ -84,29 +55,39 @@ static BOOL _synchronous;
     return self;
 }
 
+- (id) initAsyncRequest:(DWUser *)_user withMethod:(NSString *)_method andArgs:(NSDictionary *)_args withDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)_what andArg:(id)_arg {
+    self = [self init];
+    if (self != nil) {
+        user = [_user retain];
+        method = [_method copy];
+        args = [_args copy];
+        delegate = _what;
+        cbArg = _arg;
+    }
+    return self;
+}
+- (id) initAsyncRequest:(DWUser *)_user withMethod:(NSString *)_method andArgs:(NSDictionary *)_args withObject:(id)_what andSelector:(SEL)_sel andArg:(id)_arg {
+    self = [self init];
+    if (self != nil) {
+        user = [_user retain];
+        method = [_method copy];
+        args = [_args copy];
+        object = _what;
+        selector = _sel;
+        cbArg = _arg;
+    }
+    return self;
+}
+
+ 
 +(DWXMLRPCRequest *)asyncRequestFor:(DWUser *)user withMethod:(NSString *)method andArgs:(NSDictionary *)args withDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)what andArg:(id)arg {
-    DWXMLRPCRequest *req = [DWXMLRPCRequest new];
-    req.user = user;
-    req.method = method;
-    req.args = args;
-    
-    req.delegate = what;
-    req.cbArg = arg;
-    
+    DWXMLRPCRequest *req = [[DWXMLRPCRequest alloc] initAsyncRequest:user withMethod:method andArgs:args withDelegate:what andArg:arg];
     [req call];
     return req;
 }
 
 +(DWXMLRPCRequest *)asyncRequestFor:(DWUser *)user withMethod:(NSString *)method andArgs:(NSDictionary *)args withObject:(id)what andSelector:(SEL)sel andArg:(id)arg {
-    DWXMLRPCRequest *req = [DWXMLRPCRequest new];
-    req.user = user;
-    req.method = method;
-    req.args = args;
-    
-    req.object = what;
-    req.selector = sel;
-    req.cbArg = arg;
-    
+    DWXMLRPCRequest *req = [[DWXMLRPCRequest alloc] initAsyncRequest:user withMethod:method andArgs:args withObject:what andSelector:sel andArg:arg];
     [req call];
     return req;
 }
@@ -143,9 +124,11 @@ static BOOL _synchronous;
         if (self.delegate) {
             self.complete = YES;
             [self.delegate asyncRequest:self didReceiveResponse:response];
+            [self autorelease]; // We retain ourselves, and now we're done with ourselves.
         } else if (self.object &amp;&amp; [self.object respondsToSelector:self.selector]) {
             IMP test = [self.object methodForSelector:self.selector];
             test(self.object, self.selector, self, self.cbArg, nil, response);
+            [self autorelease]; // We retain ourselves, and now we're done with ourselves.
         }
     } else { // Just assume this is the challenge response.
         hasChallenge = YES;
@@ -153,9 +136,11 @@ static BOOL _synchronous;
             if (self.delegate) {
                 self.failed = YES;
                 [self.delegate asyncRequest:self didReceiveResponse:response];
+                [self autorelease]; // We retain ourselves, and now we're done with ourselves.
             } else if (self.object &amp;&amp; [self.object respondsToSelector:self.selector]) {
                 IMP test = [self.object methodForSelector:self.selector];
                 test(self.object, self.selector, self, self.cbArg, nil, response);
+                [self autorelease]; // We retain ourselves, and now we're done with ourselves.
             }
         } else {
             NSString *challenge = [[response object] objectForKey:@&quot;challenge&quot;];
@@ -182,4 +167,28 @@ static BOOL _synchronous;
 - (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge {}
 - (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge {}
 
+#pragma mark Gettters/Setters
+
+-(DWUser *)user { return user; }
+-(NSString *)method { return method; }
+
+-(NSDictionary *)args { return args; }
+-(void)setArgs:(NSDictionary *)val { SETTER_COPY(args); }
+
+-(id&lt;DWXMLRPCRequestDelegate&gt;)delegate { return delegate; }
+-(void)setDelegate:(id&lt;DWXMLRPCRequestDelegate&gt;)val { SETTER_ASSIGN(delegate); }
+
+-(id)object { return object; }
+-(SEL)selector { return selector; }
+-(id)cbArg { return cbArg; }
+
+-(BOOL)complete { return complete; }
+-(void)setComplete:(BOOL)val { SETTER_ASSIGN(complete); }
+
+-(BOOL)failed { return failed; }
+-(void)setFailed:(BOOL)val { SETTER_ASSIGN(failed); }
+
+-(XMLRPCRequest *)request { return request; }
+-(void)setRequest:(XMLRPCRequest *)val { SETTER_RETAIN(request); }
+
 @end
\ No newline at end of file</diff>
      <filename>DWXMLRPCRequest.m</filename>
    </modified>
    <modified>
      <diff>@@ -32,9 +32,8 @@
 		94A3034F0F7DF10A00A0EDA0 /* XMLRPC.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 94A303380F7DF0F500A0EDA0 /* XMLRPC.framework */; };
 		94A303570F7DF13200A0EDA0 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94A303380F7DF0F500A0EDA0 /* XMLRPC.framework */; };
 		94A303620F7DF16E00A0EDA0 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94A303380F7DF0F500A0EDA0 /* XMLRPC.framework */; };
-		94ACD4670FBFA6A600F263CB /* genprops.rb in Resources */ = {isa = PBXBuildFile; fileRef = 94ACD4660FBFA6A600F263CB /* genprops.rb */; };
-		94ACD5DF0FBFC29300F263CB /* Properties.m in Sources */ = {isa = PBXBuildFile; fileRef = 94ACD5DE0FBFC29300F263CB /* Properties.m */; };
 		94ACD74E0FBFE0E100F263CB /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 94ACD74D0FBFE0E100F263CB /* libcrypto.dylib */; };
+		94ACD8740FBFE83000F263CB /* InternalDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 94ACD8730FBFE83000F263CB /* InternalDefines.h */; };
 		94BF1C1C0F7711CA00C6C83A /* DWTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 94BF1C1A0F7711CA00C6C83A /* DWTag.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		94BF1C1D0F7711CA00C6C83A /* DWTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 94BF1C1B0F7711CA00C6C83A /* DWTag.m */; };
 		94BF1D2D0F7718EF00C6C83A /* DWJournal+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 94BF1D2C0F7718EF00C6C83A /* DWJournal+Internal.h */; };
@@ -112,9 +111,8 @@
 		9480AFD00F6E1C1B006C4F9F /* DWJournal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWJournal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		9480AFD10F6E1C1B006C4F9F /* DWJournal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWJournal.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		94A303300F7DF0F400A0EDA0 /* XMLRPC.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = XMLRPC.xcodeproj; path = ../XMLRPC/XMLRPC.xcodeproj; sourceTree = SOURCE_ROOT; };
-		94ACD4660FBFA6A600F263CB /* genprops.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = genprops.rb; sourceTree = &quot;&lt;group&gt;&quot;; };
-		94ACD5DE0FBFC29300F263CB /* Properties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Properties.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		94ACD74D0FBFE0E100F263CB /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = &quot;compiled.mach-o.dylib&quot;; name = libcrypto.dylib; path = usr/lib/libcrypto.dylib; sourceTree = SDKROOT; };
+		94ACD8730FBFE83000F263CB /* InternalDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InternalDefines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		94BF1C1A0F7711CA00C6C83A /* DWTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWTag.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		94BF1C1B0F7711CA00C6C83A /* DWTag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWTag.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		94BF1D2C0F7718EF00C6C83A /* DWJournal+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;DWJournal+Internal.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -191,6 +189,7 @@
 		08FB77AEFE84172EC02AAC07 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				94ACD8730FBFE83000F263CB /* InternalDefines.h */,
 				94809D070F6CEDB0006C4F9F /* NSStringAdditions.h */,
 				94809D080F6CEDB0006C4F9F /* NSStringAdditions.m */,
 				94809DC80F6CF26B006C4F9F /* Dreamwidth.h */,
@@ -208,7 +207,6 @@
 				94BF1D2C0F7718EF00C6C83A /* DWJournal+Internal.h */,
 				94BF1C1A0F7711CA00C6C83A /* DWTag.h */,
 				94BF1C1B0F7711CA00C6C83A /* DWTag.m */,
-				94ACD5DE0FBFC29300F263CB /* Properties.m */,
 			);
 			name = Classes;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -237,7 +235,6 @@
 			isa = PBXGroup;
 			children = (
 				32DBCF5E0370ADEE00C91783 /* Dreamwidth_Prefix.pch */,
-				94ACD4660FBFA6A600F263CB /* genprops.rb */,
 			);
 			name = &quot;Other Sources&quot;;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -290,6 +287,7 @@
 				9480AFD20F6E1C1B006C4F9F /* DWJournal.h in Headers */,
 				94BF1C1C0F7711CA00C6C83A /* DWTag.h in Headers */,
 				94BF1D2D0F7718EF00C6C83A /* DWJournal+Internal.h in Headers */,
+				94ACD8740FBFE83000F263CB /* InternalDefines.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -300,7 +298,6 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget &quot;Dreamwidth&quot; */;
 			buildPhases = (
-				94ACD8480FBFE56700F263CB /* ShellScript */,
 				8DC2EF560486A6940098B216 /* Frameworks */,
 				8DC2EF500486A6940098B216 /* Headers */,
 				8DC2EF520486A6940098B216 /* Resources */,
@@ -378,7 +375,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */,
-				94ACD4670FBFA6A600F263CB /* genprops.rb in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -405,19 +401,6 @@
 			shellPath = /bin/sh;
 			shellScript = &quot;# Run the unit tests in this test bundle.\n\&quot;${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\&quot;\n&quot;;
 		};
-		94ACD8480FBFE56700F263CB /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = &quot;/usr/bin/env ruby&quot;;
-			shellScript = &quot;require 'genprops.rb'&quot;;
-		};
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -431,7 +414,6 @@
 				9480AEFC0F6E13DE006C4F9F /* DWUserpic.m in Sources */,
 				9480AFD30F6E1C1B006C4F9F /* DWJournal.m in Sources */,
 				94BF1C1D0F7711CA00C6C83A /* DWTag.m in Sources */,
-				94ACD5DF0FBFC29300F263CB /* Properties.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -521,13 +503,13 @@
 				ADDITIONAL_SDKS = &quot;&quot;;
 				ARCHS = &quot;$(ARCHS_STANDARD_32_BIT)&quot;;
 				GCC_C_LANGUAGE_STANDARD = c99;
-				GCC_ENABLE_OBJC_GC = supported;
+				GCC_ENABLE_OBJC_GC = unsupported;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				PREBINDING = NO;
-				SDKROOT = macosx10.4;
+				SDKROOT = macosx10.5;
 				SYMROOT = ../build;
 			};
 			name = Debug;
@@ -538,11 +520,11 @@
 				ADDITIONAL_SDKS = &quot;&quot;;
 				ARCHS = &quot;$(ARCHS_STANDARD_32_BIT)&quot;;
 				GCC_C_LANGUAGE_STANDARD = c99;
-				GCC_ENABLE_OBJC_GC = supported;
+				GCC_ENABLE_OBJC_GC = unsupported;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
-				SDKROOT = macosx10.4;
+				SDKROOT = macosx10.5;
 				SYMROOT = ../build;
 			};
 			name = Release;</diff>
      <filename>Dreamwidth.xcodeproj/project.pbxproj</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>genprops.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>f1f114d1917696bfedc047cc148ac87de4c3d86d</id>
    </parent>
  </parents>
  <author>
    <name>Andrea Nall</name>
    <email>anall@andreanall.com</email>
  </author>
  <url>http://github.com/anall/dreamwidth-cocoa/commit/10b13bb2e2a4280b850b92af1683a4d947a52442</url>
  <id>10b13bb2e2a4280b850b92af1683a4d947a52442</id>
  <committed-date>2009-05-18T05:29:21-07:00</committed-date>
  <authored-date>2009-05-18T05:29:21-07:00</authored-date>
  <message>Cleanup, manualy do the properties not genprops</message>
  <tree>d45b28c48eb265dead08e1f6a726bda3a214c3b3</tree>
  <committer>
    <name>Andrea Nall</name>
    <email>anall@andreanall.com</email>
  </committer>
</commit>
