yesh! I figured out how to serialise a data object hierarchy with circular dependencies. DataContractSerializer is seriously awesome! (Shortcuts are stored inside Applications and they also have a reference to their parent application so that we can e.g. ask a shortcut getApplicationDescription. Hence the circular dependency.. which is perfectly fine during runtime since it's just a reference, but hard to serialise because normally you'd write the application-->shortcut-->application-->shortcut... etc. until everyone's dead. The solution was to add the flag "[DataMember()]" to all datamembers that we need and [DataContract(IsReference = true)] to the Application class so that it's reference would be saved instead of the entire thing.