+#import "intf.h"
+#import "prefs.h"
+#import "simple_prefs.h"
+#import "prefs_widgets.h"
+#import "vlc_keys.h"
+
+/* /!\ Warning: Unreadable code :/ */
+
+@interface VLCTreeItem : NSObject
+{
+ NSString *_name;
+ NSMutableArray *_children;
+ NSMutableArray *_options;
+ NSMutableArray *_subviews;
+}
+
+- (id)initWithName:(NSString*)name;
+
+- (int)numberOfChildren;
+- (VLCTreeItem *)childAtIndex:(NSInteger)i_index;
+
+- (NSString *)name;
+- (NSMutableArray *)children;
+- (NSMutableArray *)options;
+- (void)showView:(NSScrollView *)o_prefs_view;
+- (void)applyChanges;
+- (void)resetView;
+
+@end
+
+/* CONFIG_SUBCAT */
+@interface VLCTreeSubCategoryItem : VLCTreeItem
+{
+ int _subCategory;
+}
++ (VLCTreeSubCategoryItem *)subCategoryTreeItemWithSubCategory:(int)subCategory;
+- (id)initWithSubCategory:(int)subCategory;
+- (int)subCategory;
+@end
+
+/* Plugin daughters */
+@interface VLCTreePluginItem : VLCTreeItem
+{
+ module_config_t * _configItems;
+ unsigned int _configSize;
+}
++ (VLCTreePluginItem *)pluginTreeItemWithPlugin:(module_t *)plugin;
+- (id)initWithPlugin:(module_t *)plugin;
+
+- (module_config_t *)configItems;
+- (unsigned int)configSize;
+@end
+
+/* CONFIG_CAT */
+@interface VLCTreeCategoryItem : VLCTreeItem
+{
+ int _category;
+}
++ (VLCTreeCategoryItem *)categoryTreeItemWithCategory:(int)category;
+- (id)initWithCategory:(int)category;
+
+- (int)category;
+- (VLCTreeSubCategoryItem *)itemRepresentingSubCategory:(int)category;
+@end
+
+/* individual options. */
+@interface VLCTreeLeafItem : VLCTreeItem
+{
+ module_config_t * _configItem;
+}
+- (id)initWithConfigItem:(module_config_t *)configItem;
+
+- (module_config_t *)configItem;
+@end
+
+@interface VLCTreeMainItem : VLCTreePluginItem
+{
+}
+- (VLCTreeCategoryItem *)itemRepresentingCategory:(int)category;
+@end
+
+#pragma mark -