From 5a6552120395611e66a88821ce848a06c9ea4720 Mon Sep 17 00:00:00 2001
From: lbsa71
Date: Fri, 5 Oct 2007 10:14:42 +0000
Subject: == The "right name and place" commit == * Moved InventoryData to
 Framework.Types/InventoryItemBase.cs * Moved UserData to
 Framework.Interfaces/IUserData.cs * Moved UserProfileData to
 Framework/Types/UserProfileData.cs * Deleted ass-backwards Framework
 dependency on Framework.Data (now it's the other way round) * Changed some
 namespaces to reflect file structure

---
 .../Communications/Cache/AssetTransactions.cs      |   2 +-
 .../Communications/Cache/CachedUserInfo.cs         |  18 +-
 .../Communications/Cache/InventoryFolder.cs        |   1 -
 .../Communications/Cache/LibraryRootFolder.cs      |   2 +-
 .../Communications/Cache/UserProfileCache.cs       |   2 +-
 .../Framework/Communications/Capabilities/Caps.cs  |   1 -
 .../Communications/CommunicationsManager.cs        |   1 -
 .../Framework/Communications/IInventoryServices.cs |   2 +-
 .../Communications/InventoryServiceBase.cs         |   2 +-
 OpenSim/Framework/Communications/LoginService.cs   |   2 +-
 .../Framework/Communications/UserManagerBase.cs    |   1 +
 OpenSim/Framework/Data.DB4o/DB4oManager.cs         |   1 +
 OpenSim/Framework/Data.DB4o/DB4oUserData.cs        |   1 +
 OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs |   1 +
 OpenSim/Framework/Data.MySQL/MySQLManager.cs       |   1 +
 OpenSim/Framework/Data.MySQL/MySQLUserData.cs      |   1 +
 OpenSim/Framework/Data.SQLite/SQLiteUserData.cs    |   1 +
 OpenSim/Framework/Data/InventoryData.cs            | 222 ---------------------
 OpenSim/Framework/Data/UserData.cs                 | 134 -------------
 OpenSim/Framework/Data/UserProfileData.cs          | 192 ------------------
 OpenSim/Framework/General/Interfaces/IClientAPI.cs |   1 -
 OpenSim/Framework/General/Interfaces/IUserData.cs  | 135 +++++++++++++
 .../Framework/General/Interfaces/IUserService.cs   |   2 +-
 .../Framework/General/Types/InventoryItemBase.cs   | 222 +++++++++++++++++++++
 OpenSim/Framework/General/Types/UserProfileData.cs | 191 ++++++++++++++++++
 25 files changed, 566 insertions(+), 573 deletions(-)
 delete mode 100644 OpenSim/Framework/Data/InventoryData.cs
 delete mode 100644 OpenSim/Framework/Data/UserData.cs
 delete mode 100644 OpenSim/Framework/Data/UserProfileData.cs
 create mode 100644 OpenSim/Framework/General/Interfaces/IUserData.cs
 create mode 100644 OpenSim/Framework/General/Types/InventoryItemBase.cs
 create mode 100644 OpenSim/Framework/General/Types/UserProfileData.cs

(limited to 'OpenSim/Framework')

diff --git a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs
index d0507d0..51fc462 100644
--- a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs
@@ -32,10 +32,10 @@ using System.Text;
 using System.IO;
 using libsecondlife;
 using libsecondlife.Packets;
+using OpenSim.Framework.Communications.Cache;
 using OpenSim.Framework.Interfaces;
 using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
-using OpenSim.Framework.Data;
 using OpenSim.Region.Capabilities;
 using OpenSim.Framework.Servers;
 
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index 99dc45a..b1432ff 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -25,22 +25,15 @@
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 */
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
 using libsecondlife;
-using OpenSim.Framework.Interfaces;
 using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Utilities;
+using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder;
 
-namespace OpenSim.Framework.Communications.Caches
+namespace OpenSim.Framework.Communications.Cache
 {
     public class CachedUserInfo
     {
-        private CommunicationsManager m_parentCommsManager;
+        private readonly CommunicationsManager m_parentCommsManager;
         // Fields
         public InventoryFolder RootFolder = null;
         public UserProfileData UserProfile = null;
@@ -127,7 +120,4 @@ namespace OpenSim.Framework.Communications.Caches
             return result;
         }
     }
-
-
-}
-
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs
index 885cffc..fbe1bd0 100644
--- a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs
+++ b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs
@@ -32,7 +32,6 @@ using System.Text;
 using System.IO;
 using libsecondlife;
 using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Data;
 using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
 
diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
index deef028..38fad68 100644
--- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
+++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
@@ -3,8 +3,8 @@ using System.IO;
 using System.Collections.Generic;
 using System.Text;
 using libsecondlife;
+using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
-using OpenSim.Framework.Data;
 using Nini.Config;
 
 namespace OpenSim.Framework.Communications.Caches
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs
index 390b938..9e32ea5 100644
--- a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs
+++ b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs
@@ -31,10 +31,10 @@ using System.Collections.Generic;
 using System.Text;
 using System.IO;
 using libsecondlife;
+using OpenSim.Framework.Communications.Cache;
 using OpenSim.Framework.Interfaces;
 using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
-using OpenSim.Framework.Data;
 
 namespace OpenSim.Framework.Communications.Caches
 {
diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs
index 59c6d7c..4ed59c7 100644
--- a/OpenSim/Framework/Communications/Capabilities/Caps.cs
+++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs
@@ -35,7 +35,6 @@ using OpenSim.Framework.Communications.Cache;
 using OpenSim.Framework.Servers;
 using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
-using OpenSim.Framework.Data;
 
 namespace OpenSim.Region.Capabilities
 {
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs
index e266b90..5af07f7 100644
--- a/OpenSim/Framework/Communications/CommunicationsManager.cs
+++ b/OpenSim/Framework/Communications/CommunicationsManager.cs
@@ -29,7 +29,6 @@ using System;
 using libsecondlife;
 using OpenSim.Framework.Communications.Cache;
 using OpenSim.Framework.Communications.Caches;
-using OpenSim.Framework.Data;
 using OpenSim.Framework.Interfaces;
 using OpenSim.Framework.Servers;
 using OpenSim.Framework.Types;
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs
index 80c2e64..980bb27 100644
--- a/OpenSim/Framework/Communications/IInventoryServices.cs
+++ b/OpenSim/Framework/Communications/IInventoryServices.cs
@@ -1,9 +1,9 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
-using OpenSim.Framework.Data;
 using libsecondlife;
 using OpenSim.Framework.Communications.Caches;
+using OpenSim.Framework.Types;
 using InventoryFolder = OpenSim.Framework.Communications.Caches.InventoryFolder;
 
 namespace OpenSim.Framework.Communications
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
index da7a0ce..7536429 100644
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs
@@ -4,7 +4,7 @@ using System.Reflection;
 using libsecondlife;
 using OpenSim.Framework.Communications;
 using OpenSim.Framework.Console;
-using OpenSim.Framework.Data;
+using OpenSim.Framework.Types;
 using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder;
 
 namespace OpenSim.Framework.Communications
diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs
index 8e7cf80..06abb69 100644
--- a/OpenSim/Framework/Communications/LoginService.cs
+++ b/OpenSim/Framework/Communications/LoginService.cs
@@ -6,9 +6,9 @@ using System.Security.Cryptography;
 using libsecondlife;
 using Nwc.XmlRpc;
 using OpenSim.Framework.Console;
-using OpenSim.Framework.Data;
 using OpenSim.Framework.Interfaces;
 using OpenSim.Framework.Inventory;
+using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
 
 using OpenSim.Framework.Configuration;
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs
index bbda054..56ed959 100644
--- a/OpenSim/Framework/Communications/UserManagerBase.cs
+++ b/OpenSim/Framework/Communications/UserManagerBase.cs
@@ -37,6 +37,7 @@ using OpenSim.Framework.Configuration;
 using OpenSim.Framework.Console;
 using OpenSim.Framework.Data;
 using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
 
 namespace OpenSim.Framework.UserManagement
diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
index 0ab7aec..224b842 100644
--- a/OpenSim/Framework/Data.DB4o/DB4oManager.cs
+++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
@@ -29,6 +29,7 @@ using System;
 using System.Collections.Generic;
 using Db4objects.Db4o;
 using libsecondlife;
+using OpenSim.Framework.Types;
 
 namespace OpenSim.Framework.Data.DB4o
 {
diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
index 2ab1488..38f1b55 100644
--- a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
+++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
@@ -28,6 +28,7 @@
 using System;
 using System.IO;
 using libsecondlife;
+using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
 
 namespace OpenSim.Framework.Data.DB4o
diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
index 5009d9e..f773da4 100644
--- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
+++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
@@ -29,6 +29,7 @@ using System;
 using System.Collections.Generic;
 using System.Data;
 using libsecondlife;
+using OpenSim.Framework.Types;
 
 namespace OpenSim.Framework.Data.MySQL
 {
diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
index 5037f98..a83ee45 100644
--- a/OpenSim/Framework/Data.MySQL/MySQLManager.cs
+++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
@@ -30,6 +30,7 @@ using System.Collections.Generic;
 using System.Data;
 using libsecondlife;
 using MySql.Data.MySqlClient;
+using OpenSim.Framework.Types;
 
 namespace OpenSim.Framework.Data.MySQL
 {
diff --git a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs
index e746717..301550f 100644
--- a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs
+++ b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs
@@ -29,6 +29,7 @@ using System;
 using System.Collections.Generic;
 using System.Data;
 using libsecondlife;
+using OpenSim.Framework.Types;
 
 namespace OpenSim.Framework.Data.MySQL
 {
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs b/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs
index 3a13ecc..c7b7659 100644
--- a/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs
+++ b/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs
@@ -28,6 +28,7 @@
 using System;
 using System.IO;
 using libsecondlife;
+using OpenSim.Framework.Types;
 using OpenSim.Framework.Utilities;
 using System.Data;
 using System.Data.SqlTypes;
diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs
deleted file mode 100644
index 2df26e1..0000000
--- a/OpenSim/Framework/Data/InventoryData.cs
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// Inventory Item - contains all the properties associated with an individual inventory piece.
-    /// </summary>
-    public class InventoryItemBase
-    {
-        /// <summary>
-        /// A UUID containing the ID for the inventory item itself
-        /// </summary>
-        public LLUUID inventoryID;
-        /// <summary>
-        /// The UUID of the associated asset on the asset server
-        /// </summary>
-        public LLUUID assetID;
-        /// <summary>
-        /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
-        /// </summary>
-        public int assetType;
-        /// <summary>
-        /// The type of inventory item. (Can be slightly different to the asset type
-        /// </summary>
-        public int invType;
-        /// <summary>
-        /// The folder this item is contained in 
-        /// </summary>
-        public LLUUID parentFolderID;
-        /// <summary>
-        /// The owner of this inventory item
-        /// </summary>
-        public LLUUID avatarID;
-        /// <summary>
-        /// The creator of this item
-        /// </summary>
-        public LLUUID creatorsID;
-        /// <summary>
-        /// The name of the inventory item (must be less than 64 characters)
-        /// </summary>
-        public string inventoryName;
-        /// <summary>
-        /// The description of the inventory item (must be less than 64 characters)
-        /// </summary>
-        public string inventoryDescription;
-        /// <summary>
-        /// A mask containing the permissions for the next owner (cannot be enforced)
-        /// </summary>
-        public uint inventoryNextPermissions;
-        /// <summary>
-        /// A mask containing permissions for the current owner (cannot be enforced)
-        /// </summary>
-        public uint inventoryCurrentPermissions;
-        /// <summary>
-        /// 
-        /// </summary>
-        public uint inventoryBasePermissions;
-        /// <summary>
-        /// 
-        /// </summary>
-        public uint inventoryEveryOnePermissions;
-    }
-
-    /// <summary>
-    /// A Class for folders which contain users inventory
-    /// </summary>
-    public class InventoryFolderBase
-    {
-        /// <summary>
-        /// The name of the folder (64 characters or less)
-        /// </summary>
-        public string name;
-        /// <summary>
-        /// The agent who's inventory this is contained by
-        /// </summary>
-        public LLUUID agentID;
-        /// <summary>
-        /// The folder this folder is contained in 
-        /// </summary>
-        public LLUUID parentID;
-        /// <summary>
-        /// The UUID for this folder
-        /// </summary>
-        public LLUUID folderID;
-        /// <summary>
-        /// Tyep of Items normally stored in this folder
-        /// </summary>
-        public short type;
-        /// <summary>
-        /// 
-        /// </summary>
-        public ushort version;
-    }
-
-    /// <summary>
-    /// An interface for accessing inventory data from a storage server
-    /// </summary>
-    public interface IInventoryData
-    {
-        /// <summary>
-        /// Initialises the interface
-        /// </summary>
-        void Initialise();
-
-        /// <summary>
-        /// Closes the interface
-        /// </summary>
-        void Close();
-
-        /// <summary>
-        /// The plugin being loaded
-        /// </summary>
-        /// <returns>A string containing the plugin name</returns>
-        string getName();
-
-        /// <summary>
-        /// The plugins version
-        /// </summary>
-        /// <returns>A string containing the plugin version</returns>
-        string getVersion();
-
-        /// <summary>
-        /// Returns a list of inventory items contained within the specified folder
-        /// </summary>
-        /// <param name="folderID">The UUID of the target folder</param>
-        /// <returns>A List of InventoryItemBase items</returns>
-        List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
-
-        /// <summary>
-        /// Returns a list of the root folders within a users inventory
-        /// </summary>
-        /// <param name="user">The user whos inventory is to be searched</param>
-        /// <returns>A list of folder objects</returns>
-        List<InventoryFolderBase> getUserRootFolders(LLUUID user);
-
-        /// <summary>
-        /// Returns the users inventory root folder.
-        /// </summary>
-        /// <param name="user">The UUID of the user who is having inventory being returned</param>
-        /// <returns>Root inventory folder</returns>
-        InventoryFolderBase getUserRootFolder(LLUUID user);
-
-        /// <summary>
-        /// Returns a list of inventory folders contained in the folder 'parentID'
-        /// </summary>
-        /// <param name="parentID">The folder to get subfolders for</param>
-        /// <returns>A list of inventory folders</returns>
-        List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
-
-        /// <summary>
-        /// Returns an inventory item by its UUID
-        /// </summary>
-        /// <param name="item">The UUID of the item to be returned</param>
-        /// <returns>A class containing item information</returns>
-        InventoryItemBase getInventoryItem(LLUUID item);
-
-        /// <summary>
-        /// Returns a specified inventory folder by its UUID
-        /// </summary>
-        /// <param name="folder">The UUID of the folder to be returned</param>
-        /// <returns>A class containing folder information</returns>
-        InventoryFolderBase getInventoryFolder(LLUUID folder);
-
-        /// <summary>
-        /// Creates a new inventory item based on item
-        /// </summary>
-        /// <param name="item">The item to be created</param>
-        void addInventoryItem(InventoryItemBase item);
-
-        /// <summary>
-        /// Updates an inventory item with item (updates based on ID)
-        /// </summary>
-        /// <param name="item">The updated item</param>
-        void updateInventoryItem(InventoryItemBase item);
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="item"></param>
-        void deleteInventoryItem(InventoryItemBase item);
-
-        /// <summary>
-        /// Adds a new folder specified by folder
-        /// </summary>
-        /// <param name="folder">The inventory folder</param>
-        void addInventoryFolder(InventoryFolderBase folder);
-
-        /// <summary>
-        /// Updates a folder based on its ID with folder
-        /// </summary>
-        /// <param name="folder">The inventory folder</param>
-        void updateInventoryFolder(InventoryFolderBase folder);
-    }
-}
diff --git a/OpenSim/Framework/Data/UserData.cs b/OpenSim/Framework/Data/UserData.cs
deleted file mode 100644
index 13bdf17..0000000
--- a/OpenSim/Framework/Data/UserData.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// An interface for connecting to user storage servers.
-    /// </summary>
-    public interface IUserData
-    {
-        /// <summary>
-        /// Returns a user profile from a database via their UUID
-        /// </summary>
-        /// <param name="user">The accounts UUID</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData GetUserByUUID(LLUUID user);
-
-        /// <summary>
-        /// Returns a users profile by searching their username
-        /// </summary>
-        /// <param name="name">The users username</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData GetUserByName(string name);
-
-        /// <summary>
-        /// Returns a users profile by searching their username parts
-        /// </summary>
-        /// <param name="fname">Account firstname</param>
-        /// <param name="lname">Account lastname</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData GetUserByName(string fname, string lname);
-
-        /// <summary>
-        /// Returns the current agent for a user searching by it's UUID
-        /// </summary>
-        /// <param name="user">The users UUID</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData GetAgentByUUID(LLUUID user);
-
-        /// <summary>
-        /// Returns the current session agent for a user searching by username
-        /// </summary>
-        /// <param name="name">The users account name</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData GetAgentByName(string name);
-
-        /// <summary>
-        /// Returns the current session agent for a user searching by username parts
-        /// </summary>
-        /// <param name="fname">The users first account name</param>
-        /// <param name="lname">The users account surname</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData GetAgentByName(string fname, string lname);
-
-        /// <summary>
-        /// Adds a new User profile to the database 
-        /// </summary>
-        /// <param name="user">UserProfile to add</param>
-        void AddNewUserProfile(UserProfileData user);
-
-        /// <summary>
-        ///  Updates an existing user profile
-        /// </summary>
-        /// <param name="user">UserProfile to update</param>
-        bool UpdateUserProfile(UserProfileData user);
-
-        /// <summary>
-        /// Adds a new agent to the database
-        /// </summary>
-        /// <param name="agent">The agent to add</param>
-        void AddNewUserAgent(UserAgentData agent);
-
-        /// <summary>
-        /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
-        /// </summary>
-        /// <param name="from">The account to transfer from</param>
-        /// <param name="to">The account to transfer to</param>
-        /// <param name="amount">The amount to transfer</param>
-        /// <returns>Successful?</returns>
-        bool MoneyTransferRequest(LLUUID from, LLUUID to, uint amount);
-
-        /// <summary>
-        /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
-        /// </summary>
-        /// <param name="from">User to transfer from</param>
-        /// <param name="to">User to transfer to</param>
-        /// <param name="inventory">Specified inventory item</param>
-        /// <returns>Successful?</returns>
-        bool InventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
-
-        /// <summary>
-        /// Returns the plugin version
-        /// </summary>
-        /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
-        string GetVersion();
-
-        /// <summary>
-        /// Returns the plugin name
-        /// </summary>
-        /// <returns>Plugin name, eg MySQL User Provider</returns>
-        string getName();
-
-        /// <summary>
-        /// Initialises the plugin (artificial constructor)
-        /// </summary>
-        void Initialise();
-    }
-}
diff --git a/OpenSim/Framework/Data/UserProfileData.cs b/OpenSim/Framework/Data/UserProfileData.cs
deleted file mode 100644
index 4fafe3f..0000000
--- a/OpenSim/Framework/Data/UserProfileData.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// Information about a particular user known to the userserver
-    /// </summary>
-    public class UserProfileData
-    {
-        /// <summary>
-        /// The ID value for this user
-        /// </summary>
-        public LLUUID UUID;
-
-        /// <summary>
-        /// The first component of a users account name
-        /// </summary>
-        public string username;
-        /// <summary>
-        /// The second component of a users account name
-        /// </summary>
-        public string surname;
-
-        /// <summary>
-        /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
-        /// </summary>
-        /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
-        public string passwordHash;
-        /// <summary>
-        /// The salt used for the users hash, should be 32 bytes or longer
-        /// </summary>
-        public string passwordSalt;
-
-        /// <summary>
-        /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
-        /// </summary>
-        public ulong homeRegion
-        {
-            get { return Helpers.UIntsToLong((homeRegionX * 256), (homeRegionY * 256)); }
-            set { 
-                homeRegionX = (uint)(value >> 40);
-                homeRegionY = (((uint)(value)) >> 8);
-                Console.WriteLine("HomeRegion => Incoming: " + value + ", Computed: " + homeRegion);
-            }
-        }
-        public uint homeRegionX;
-        public uint homeRegionY;
-        /// <summary>
-        /// The coordinates inside the region of the home location
-        /// </summary>
-        public LLVector3 homeLocation;
-        /// <summary>
-        /// Where the user will be looking when they rez.
-        /// </summary>
-        public LLVector3 homeLookAt;
-
-        /// <summary>
-        /// A UNIX Timestamp (seconds since epoch) for the users creation
-        /// </summary>
-        public int created;
-        /// <summary>
-        /// A UNIX Timestamp for the users last login date / time
-        /// </summary>
-        public int lastLogin;
-
-        public LLUUID rootInventoryFolderID;
-
-        /// <summary>
-        /// A URI to the users inventory server, used for foreigners and large grids
-        /// </summary>
-        public string userInventoryURI = String.Empty;
-        /// <summary>
-        /// A URI to the users asset server, used for foreigners and large grids.
-        /// </summary>
-        public string userAssetURI = String.Empty;
-
-        /// <summary>
-        /// A uint mask containing the "I can do" fields of the users profile
-        /// </summary>
-        public uint profileCanDoMask;
-        /// <summary>
-        /// A uint mask containing the "I want to do" part of the users profile
-        /// </summary>
-        public uint profileWantDoMask; // Profile window "I want to" mask
-
-        /// <summary>
-        /// The about text listed in a users profile.
-        /// </summary>
-        public string profileAboutText = String.Empty;
-        /// <summary>
-        /// The first life about text listed in a users profile
-        /// </summary>
-        public string profileFirstText = String.Empty;
-
-        /// <summary>
-        /// The profile image for an avatar stored on the asset server
-        /// </summary>
-        public LLUUID profileImage;
-        /// <summary>
-        /// The profile image for the users first life tab
-        /// </summary>
-        public LLUUID profileFirstImage;
-        /// <summary>
-        /// The users last registered agent (filled in on the user server)
-        /// </summary>
-        public UserAgentData currentAgent;
-    }
-
-    /// <summary>
-    /// Information about a users session
-    /// </summary>
-    public class UserAgentData
-    {
-        /// <summary>
-        /// The UUID of the users avatar (not the agent!)
-        /// </summary>
-        public LLUUID UUID;
-        /// <summary>
-        /// The IP address of the user
-        /// </summary>
-        public string agentIP = String.Empty;
-        /// <summary>
-        /// The port of the user
-        /// </summary>
-        public uint agentPort;
-        /// <summary>
-        /// Is the user online?
-        /// </summary>
-        public bool agentOnline;
-        /// <summary>
-        /// The session ID for the user (also the agent ID)
-        /// </summary>
-        public LLUUID sessionID;
-        /// <summary>
-        /// The "secure" session ID for the user
-        /// </summary>
-        /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
-        public LLUUID secureSessionID;
-        /// <summary>
-        /// The region the user logged into initially
-        /// </summary>
-        public LLUUID regionID;
-        /// <summary>
-        /// A unix timestamp from when the user logged in
-        /// </summary>
-        public int loginTime;
-        /// <summary>
-        /// When this agent expired and logged out, 0 if still online
-        /// </summary>
-        public int logoutTime;
-        /// <summary>
-        /// Current region the user is logged into
-        /// </summary>
-        public LLUUID currentRegion;
-        /// <summary>
-        /// Region handle of the current region the user is in
-        /// </summary>
-        public ulong currentHandle;
-        /// <summary>
-        /// The position of the user within the region
-        /// </summary>
-        public LLVector3 currentPos;
-    }
-}
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
index 344a55c..bedea9e 100644
--- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs
+++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
@@ -31,7 +31,6 @@ using System.Net;
 using libsecondlife;
 using libsecondlife.Packets;
 using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
 
 namespace OpenSim.Framework.Interfaces
 {
diff --git a/OpenSim/Framework/General/Interfaces/IUserData.cs b/OpenSim/Framework/General/Interfaces/IUserData.cs
new file mode 100644
index 0000000..bb3abe0
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IUserData.cs
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// An interface for connecting to user storage servers.
+    /// </summary>
+    public interface IUserData
+    {
+        /// <summary>
+        /// Returns a user profile from a database via their UUID
+        /// </summary>
+        /// <param name="user">The accounts UUID</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData GetUserByUUID(LLUUID user);
+
+        /// <summary>
+        /// Returns a users profile by searching their username
+        /// </summary>
+        /// <param name="name">The users username</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData GetUserByName(string name);
+
+        /// <summary>
+        /// Returns a users profile by searching their username parts
+        /// </summary>
+        /// <param name="fname">Account firstname</param>
+        /// <param name="lname">Account lastname</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData GetUserByName(string fname, string lname);
+
+        /// <summary>
+        /// Returns the current agent for a user searching by it's UUID
+        /// </summary>
+        /// <param name="user">The users UUID</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData GetAgentByUUID(LLUUID user);
+
+        /// <summary>
+        /// Returns the current session agent for a user searching by username
+        /// </summary>
+        /// <param name="name">The users account name</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData GetAgentByName(string name);
+
+        /// <summary>
+        /// Returns the current session agent for a user searching by username parts
+        /// </summary>
+        /// <param name="fname">The users first account name</param>
+        /// <param name="lname">The users account surname</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData GetAgentByName(string fname, string lname);
+
+        /// <summary>
+        /// Adds a new User profile to the database 
+        /// </summary>
+        /// <param name="user">UserProfile to add</param>
+        void AddNewUserProfile(UserProfileData user);
+
+        /// <summary>
+        ///  Updates an existing user profile
+        /// </summary>
+        /// <param name="user">UserProfile to update</param>
+        bool UpdateUserProfile(UserProfileData user);
+
+        /// <summary>
+        /// Adds a new agent to the database
+        /// </summary>
+        /// <param name="agent">The agent to add</param>
+        void AddNewUserAgent(UserAgentData agent);
+
+        /// <summary>
+        /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
+        /// </summary>
+        /// <param name="from">The account to transfer from</param>
+        /// <param name="to">The account to transfer to</param>
+        /// <param name="amount">The amount to transfer</param>
+        /// <returns>Successful?</returns>
+        bool MoneyTransferRequest(LLUUID from, LLUUID to, uint amount);
+
+        /// <summary>
+        /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
+        /// </summary>
+        /// <param name="from">User to transfer from</param>
+        /// <param name="to">User to transfer to</param>
+        /// <param name="inventory">Specified inventory item</param>
+        /// <returns>Successful?</returns>
+        bool InventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
+
+        /// <summary>
+        /// Returns the plugin version
+        /// </summary>
+        /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
+        string GetVersion();
+
+        /// <summary>
+        /// Returns the plugin name
+        /// </summary>
+        /// <returns>Plugin name, eg MySQL User Provider</returns>
+        string getName();
+
+        /// <summary>
+        /// Initialises the plugin (artificial constructor)
+        /// </summary>
+        void Initialise();
+    }
+}
diff --git a/OpenSim/Framework/General/Interfaces/IUserService.cs b/OpenSim/Framework/General/Interfaces/IUserService.cs
index 974e025..461d4cb 100644
--- a/OpenSim/Framework/General/Interfaces/IUserService.cs
+++ b/OpenSim/Framework/General/Interfaces/IUserService.cs
@@ -26,7 +26,7 @@
 * 
 */
 using libsecondlife;
-using OpenSim.Framework.Data;
+using OpenSim.Framework.Types;
 
 namespace OpenSim.Framework.Interfaces
 {
diff --git a/OpenSim/Framework/General/Types/InventoryItemBase.cs b/OpenSim/Framework/General/Types/InventoryItemBase.cs
new file mode 100644
index 0000000..e3dbe71
--- /dev/null
+++ b/OpenSim/Framework/General/Types/InventoryItemBase.cs
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    /// <summary>
+    /// Inventory Item - contains all the properties associated with an individual inventory piece.
+    /// </summary>
+    public class InventoryItemBase
+    {
+        /// <summary>
+        /// A UUID containing the ID for the inventory item itself
+        /// </summary>
+        public LLUUID inventoryID;
+        /// <summary>
+        /// The UUID of the associated asset on the asset server
+        /// </summary>
+        public LLUUID assetID;
+        /// <summary>
+        /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
+        /// </summary>
+        public int assetType;
+        /// <summary>
+        /// The type of inventory item. (Can be slightly different to the asset type
+        /// </summary>
+        public int invType;
+        /// <summary>
+        /// The folder this item is contained in 
+        /// </summary>
+        public LLUUID parentFolderID;
+        /// <summary>
+        /// The owner of this inventory item
+        /// </summary>
+        public LLUUID avatarID;
+        /// <summary>
+        /// The creator of this item
+        /// </summary>
+        public LLUUID creatorsID;
+        /// <summary>
+        /// The name of the inventory item (must be less than 64 characters)
+        /// </summary>
+        public string inventoryName;
+        /// <summary>
+        /// The description of the inventory item (must be less than 64 characters)
+        /// </summary>
+        public string inventoryDescription;
+        /// <summary>
+        /// A mask containing the permissions for the next owner (cannot be enforced)
+        /// </summary>
+        public uint inventoryNextPermissions;
+        /// <summary>
+        /// A mask containing permissions for the current owner (cannot be enforced)
+        /// </summary>
+        public uint inventoryCurrentPermissions;
+        /// <summary>
+        /// 
+        /// </summary>
+        public uint inventoryBasePermissions;
+        /// <summary>
+        /// 
+        /// </summary>
+        public uint inventoryEveryOnePermissions;
+    }
+
+    /// <summary>
+    /// A Class for folders which contain users inventory
+    /// </summary>
+    public class InventoryFolderBase
+    {
+        /// <summary>
+        /// The name of the folder (64 characters or less)
+        /// </summary>
+        public string name;
+        /// <summary>
+        /// The agent who's inventory this is contained by
+        /// </summary>
+        public LLUUID agentID;
+        /// <summary>
+        /// The folder this folder is contained in 
+        /// </summary>
+        public LLUUID parentID;
+        /// <summary>
+        /// The UUID for this folder
+        /// </summary>
+        public LLUUID folderID;
+        /// <summary>
+        /// Tyep of Items normally stored in this folder
+        /// </summary>
+        public short type;
+        /// <summary>
+        /// 
+        /// </summary>
+        public ushort version;
+    }
+
+    /// <summary>
+    /// An interface for accessing inventory data from a storage server
+    /// </summary>
+    public interface IInventoryData
+    {
+        /// <summary>
+        /// Initialises the interface
+        /// </summary>
+        void Initialise();
+
+        /// <summary>
+        /// Closes the interface
+        /// </summary>
+        void Close();
+
+        /// <summary>
+        /// The plugin being loaded
+        /// </summary>
+        /// <returns>A string containing the plugin name</returns>
+        string getName();
+
+        /// <summary>
+        /// The plugins version
+        /// </summary>
+        /// <returns>A string containing the plugin version</returns>
+        string getVersion();
+
+        /// <summary>
+        /// Returns a list of inventory items contained within the specified folder
+        /// </summary>
+        /// <param name="folderID">The UUID of the target folder</param>
+        /// <returns>A List of InventoryItemBase items</returns>
+        List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
+
+        /// <summary>
+        /// Returns a list of the root folders within a users inventory
+        /// </summary>
+        /// <param name="user">The user whos inventory is to be searched</param>
+        /// <returns>A list of folder objects</returns>
+        List<InventoryFolderBase> getUserRootFolders(LLUUID user);
+
+        /// <summary>
+        /// Returns the users inventory root folder.
+        /// </summary>
+        /// <param name="user">The UUID of the user who is having inventory being returned</param>
+        /// <returns>Root inventory folder</returns>
+        InventoryFolderBase getUserRootFolder(LLUUID user);
+
+        /// <summary>
+        /// Returns a list of inventory folders contained in the folder 'parentID'
+        /// </summary>
+        /// <param name="parentID">The folder to get subfolders for</param>
+        /// <returns>A list of inventory folders</returns>
+        List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
+
+        /// <summary>
+        /// Returns an inventory item by its UUID
+        /// </summary>
+        /// <param name="item">The UUID of the item to be returned</param>
+        /// <returns>A class containing item information</returns>
+        InventoryItemBase getInventoryItem(LLUUID item);
+
+        /// <summary>
+        /// Returns a specified inventory folder by its UUID
+        /// </summary>
+        /// <param name="folder">The UUID of the folder to be returned</param>
+        /// <returns>A class containing folder information</returns>
+        InventoryFolderBase getInventoryFolder(LLUUID folder);
+
+        /// <summary>
+        /// Creates a new inventory item based on item
+        /// </summary>
+        /// <param name="item">The item to be created</param>
+        void addInventoryItem(InventoryItemBase item);
+
+        /// <summary>
+        /// Updates an inventory item with item (updates based on ID)
+        /// </summary>
+        /// <param name="item">The updated item</param>
+        void updateInventoryItem(InventoryItemBase item);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="item"></param>
+        void deleteInventoryItem(InventoryItemBase item);
+
+        /// <summary>
+        /// Adds a new folder specified by folder
+        /// </summary>
+        /// <param name="folder">The inventory folder</param>
+        void addInventoryFolder(InventoryFolderBase folder);
+
+        /// <summary>
+        /// Updates a folder based on its ID with folder
+        /// </summary>
+        /// <param name="folder">The inventory folder</param>
+        void updateInventoryFolder(InventoryFolderBase folder);
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/General/Types/UserProfileData.cs b/OpenSim/Framework/General/Types/UserProfileData.cs
new file mode 100644
index 0000000..20d8224
--- /dev/null
+++ b/OpenSim/Framework/General/Types/UserProfileData.cs
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    /// <summary>
+    /// Information about a particular user known to the userserver
+    /// </summary>
+    public class UserProfileData
+    {
+        /// <summary>
+        /// The ID value for this user
+        /// </summary>
+        public LLUUID UUID;
+
+        /// <summary>
+        /// The first component of a users account name
+        /// </summary>
+        public string username;
+        /// <summary>
+        /// The second component of a users account name
+        /// </summary>
+        public string surname;
+
+        /// <summary>
+        /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
+        /// </summary>
+        /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
+        public string passwordHash;
+        /// <summary>
+        /// The salt used for the users hash, should be 32 bytes or longer
+        /// </summary>
+        public string passwordSalt;
+
+        /// <summary>
+        /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
+        /// </summary>
+        public ulong homeRegion
+        {
+            get { return Helpers.UIntsToLong((homeRegionX * 256), (homeRegionY * 256)); }
+            set { 
+                homeRegionX = (uint)(value >> 40);
+                homeRegionY = (((uint)(value)) >> 8);
+            }
+        }
+        public uint homeRegionX;
+        public uint homeRegionY;
+        /// <summary>
+        /// The coordinates inside the region of the home location
+        /// </summary>
+        public LLVector3 homeLocation;
+        /// <summary>
+        /// Where the user will be looking when they rez.
+        /// </summary>
+        public LLVector3 homeLookAt;
+
+        /// <summary>
+        /// A UNIX Timestamp (seconds since epoch) for the users creation
+        /// </summary>
+        public int created;
+        /// <summary>
+        /// A UNIX Timestamp for the users last login date / time
+        /// </summary>
+        public int lastLogin;
+
+        public LLUUID rootInventoryFolderID;
+
+        /// <summary>
+        /// A URI to the users inventory server, used for foreigners and large grids
+        /// </summary>
+        public string userInventoryURI = String.Empty;
+        /// <summary>
+        /// A URI to the users asset server, used for foreigners and large grids.
+        /// </summary>
+        public string userAssetURI = String.Empty;
+
+        /// <summary>
+        /// A uint mask containing the "I can do" fields of the users profile
+        /// </summary>
+        public uint profileCanDoMask;
+        /// <summary>
+        /// A uint mask containing the "I want to do" part of the users profile
+        /// </summary>
+        public uint profileWantDoMask; // Profile window "I want to" mask
+
+        /// <summary>
+        /// The about text listed in a users profile.
+        /// </summary>
+        public string profileAboutText = String.Empty;
+        /// <summary>
+        /// The first life about text listed in a users profile
+        /// </summary>
+        public string profileFirstText = String.Empty;
+
+        /// <summary>
+        /// The profile image for an avatar stored on the asset server
+        /// </summary>
+        public LLUUID profileImage;
+        /// <summary>
+        /// The profile image for the users first life tab
+        /// </summary>
+        public LLUUID profileFirstImage;
+        /// <summary>
+        /// The users last registered agent (filled in on the user server)
+        /// </summary>
+        public UserAgentData currentAgent;
+    }
+
+    /// <summary>
+    /// Information about a users session
+    /// </summary>
+    public class UserAgentData
+    {
+        /// <summary>
+        /// The UUID of the users avatar (not the agent!)
+        /// </summary>
+        public LLUUID UUID;
+        /// <summary>
+        /// The IP address of the user
+        /// </summary>
+        public string agentIP = String.Empty;
+        /// <summary>
+        /// The port of the user
+        /// </summary>
+        public uint agentPort;
+        /// <summary>
+        /// Is the user online?
+        /// </summary>
+        public bool agentOnline;
+        /// <summary>
+        /// The session ID for the user (also the agent ID)
+        /// </summary>
+        public LLUUID sessionID;
+        /// <summary>
+        /// The "secure" session ID for the user
+        /// </summary>
+        /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
+        public LLUUID secureSessionID;
+        /// <summary>
+        /// The region the user logged into initially
+        /// </summary>
+        public LLUUID regionID;
+        /// <summary>
+        /// A unix timestamp from when the user logged in
+        /// </summary>
+        public int loginTime;
+        /// <summary>
+        /// When this agent expired and logged out, 0 if still online
+        /// </summary>
+        public int logoutTime;
+        /// <summary>
+        /// Current region the user is logged into
+        /// </summary>
+        public LLUUID currentRegion;
+        /// <summary>
+        /// Region handle of the current region the user is in
+        /// </summary>
+        public ulong currentHandle;
+        /// <summary>
+        /// The position of the user within the region
+        /// </summary>
+        public LLVector3 currentPos;
+    }
+}
\ No newline at end of file
-- 
cgit v1.1