diff --git a/apps/opencs/model/world/columnbase.hpp b/apps/opencs/model/world/columnbase.hpp
index f2379304c3..001ea4ff6a 100644
--- a/apps/opencs/model/world/columnbase.hpp
+++ b/apps/opencs/model/world/columnbase.hpp
@@ -39,7 +39,8 @@ namespace CSMWorld
             Display_Script,
             Display_ApparatusType,
             Display_ArmorType,
-            Display_ClothingType
+            Display_ClothingType,
+            Display_CreatureType
         };
 
         std::string mTitle;
diff --git a/apps/opencs/model/world/refidadapterimp.cpp b/apps/opencs/model/world/refidadapterimp.cpp
index ecd6ff7a68..1b54f2dad8 100644
--- a/apps/opencs/model/world/refidadapterimp.cpp
+++ b/apps/opencs/model/world/refidadapterimp.cpp
@@ -220,4 +220,70 @@ void CSMWorld::ContainerRefIdAdapter::setData (const RefIdColumn *column, RefIdD
     }
     else
         NameRefIdAdapter<ESM::Container>::setData (column, data, index, value);
+}
+
+CSMWorld::CreatureColumns::CreatureColumns (const ActorColumns& actorColumns)
+: ActorColumns (actorColumns)
+{}
+
+CSMWorld::CreatureRefIdAdapter::CreatureRefIdAdapter (const CreatureColumns& columns)
+: ActorRefIdAdapter<ESM::Creature> (UniversalId::Type_Creature, columns), mColumns (columns)
+{}
+
+QVariant CSMWorld::CreatureRefIdAdapter::getData (const RefIdColumn *column, const RefIdData& data,
+    int index) const
+{
+    const Record<ESM::Creature>& record = static_cast<const Record<ESM::Creature>&> (
+        data.getRecord (RefIdData::LocalIndex (index, UniversalId::Type_Creature)));
+
+    if (column==mColumns.mType)
+        return record.get().mData.mType;
+
+    if (column==mColumns.mSoul)
+        return record.get().mData.mSoul;
+
+    if (column==mColumns.mScale)
+        return record.get().mScale;
+
+    if (column==mColumns.mOriginal)
+        return QString::fromUtf8 (record.get().mOriginal.c_str());
+
+    std::map<const RefIdColumn *, unsigned int>::const_iterator iter =
+        mColumns.mFlags.find (column);
+
+    if (iter!=mColumns.mFlags.end())
+        return (record.get().mFlags & iter->second)!=0;
+
+    return ActorRefIdAdapter<ESM::Creature>::getData (column, data, index);
+}
+
+void CSMWorld::CreatureRefIdAdapter::setData (const RefIdColumn *column, RefIdData& data, int index,
+    const QVariant& value) const
+{
+    Record<ESM::Creature>& record = static_cast<Record<ESM::Creature>&> (
+        data.getRecord (RefIdData::LocalIndex (index, UniversalId::Type_Creature)));
+
+    if (column==mColumns.mType)
+        record.get().mData.mType = value.toInt();
+    else if (column==mColumns.mSoul)
+        record.get().mData.mSoul = value.toInt();
+    else if (column==mColumns.mScale)
+        record.get().mScale = value.toFloat();
+    else if (column==mColumns.mOriginal)
+        record.get().mOriginal = value.toString().toUtf8().constData();
+    else
+    {
+        std::map<const RefIdColumn *, unsigned int>::const_iterator iter =
+            mColumns.mFlags.find (column);
+
+        if (iter!=mColumns.mFlags.end())
+        {
+            if (value.toInt()!=0)
+                record.get().mFlags |= iter->second;
+            else
+                record.get().mFlags &= ~iter->second;
+        }
+        else
+            ActorRefIdAdapter<ESM::Creature>::setData (column, data, index, value);
+    }
 }
\ No newline at end of file
diff --git a/apps/opencs/model/world/refidadapterimp.hpp b/apps/opencs/model/world/refidadapterimp.hpp
index 6818921651..328be0c6b8 100644
--- a/apps/opencs/model/world/refidadapterimp.hpp
+++ b/apps/opencs/model/world/refidadapterimp.hpp
@@ -614,7 +614,33 @@ namespace CSMWorld
             virtual void setData (const RefIdColumn *column, RefIdData& data, int index,
                 const QVariant& value) const;
             ///< If the data type does not match an exception is thrown.
+    };
 
+    struct CreatureColumns : public ActorColumns
+    {
+        std::map<const RefIdColumn *, unsigned int> mFlags;
+        const RefIdColumn *mType;
+        const RefIdColumn *mSoul;
+        const RefIdColumn *mScale;
+        const RefIdColumn *mOriginal;
+
+        CreatureColumns (const ActorColumns& actorColumns);
+    };
+
+    class CreatureRefIdAdapter : public ActorRefIdAdapter<ESM::Creature>
+    {
+            CreatureColumns mColumns;
+
+        public:
+
+            CreatureRefIdAdapter (const CreatureColumns& columns);
+
+            virtual QVariant getData (const RefIdColumn *column, const RefIdData& data, int index)
+                const;
+
+            virtual void setData (const RefIdColumn *column, RefIdData& data, int index,
+                const QVariant& value) const;
+            ///< If the data type does not match an exception is thrown.
     };
 }
 
diff --git a/apps/opencs/model/world/refidcollection.cpp b/apps/opencs/model/world/refidcollection.cpp
index e26f1dcf59..5fc479f4cc 100644
--- a/apps/opencs/model/world/refidcollection.cpp
+++ b/apps/opencs/model/world/refidcollection.cpp
@@ -160,6 +160,43 @@ CSMWorld::RefIdCollection::RefIdCollection()
     mColumns.push_back (RefIdColumn ("Respawn", ColumnBase::Display_Boolean));
     const RefIdColumn *respawn = &mColumns.back();
 
+    CreatureColumns creatureColumns (actorsColumns);
+
+    mColumns.push_back (RefIdColumn ("Creature Type", ColumnBase::Display_CreatureType));
+    creatureColumns.mType = &mColumns.back();
+    mColumns.push_back (RefIdColumn ("Soul Points", ColumnBase::Display_Integer));
+    creatureColumns.mSoul = &mColumns.back();
+    mColumns.push_back (RefIdColumn ("Scale", ColumnBase::Display_Float));
+    creatureColumns.mScale = &mColumns.back();
+    mColumns.push_back (RefIdColumn ("Original Creature", ColumnBase::Display_String));
+    creatureColumns.mOriginal = &mColumns.back();
+
+    static const struct
+    {
+        const char *mName;
+        unsigned int mFlag;
+    } sCreatureFlagTable[] =
+    {
+        { "Biped", ESM::Creature::Biped },
+        { "Has Weapon", ESM::Creature::Weapon },
+        { "No Movement", ESM::Creature::None },
+        { "Swims", ESM::Creature::Swims },
+        { "Flies", ESM::Creature::Flies },
+        { "Walks", ESM::Creature::Walks },
+        { "Essential", ESM::Creature::Essential },
+        { "Skeleton Blood", ESM::Creature::Skeleton },
+        { "Metal Blood", ESM::Creature::Metal },
+        { 0, 0 }
+    };
+
+    for (int i=0; sCreatureFlagTable[i].mName; ++i)
+    {
+        mColumns.push_back (RefIdColumn (sCreatureFlagTable[i].mName, ColumnBase::Display_Boolean));
+        creatureColumns.mFlags.insert (std::make_pair (&mColumns.back(), sCreatureFlagTable[i].mFlag));
+    }
+
+    creatureColumns.mFlags.insert (std::make_pair (respawn, ESM::Creature::Respawn));
+
     mAdapters.insert (std::make_pair (UniversalId::Type_Activator,
         new NameRefIdAdapter<ESM::Activator> (UniversalId::Type_Activator, nameColumns)));
     mAdapters.insert (std::make_pair (UniversalId::Type_Potion,
@@ -175,7 +212,7 @@ CSMWorld::RefIdCollection::RefIdCollection()
     mAdapters.insert (std::make_pair (UniversalId::Type_Container,
         new ContainerRefIdAdapter (nameColumns, weightCapacity, organic, respawn)));
     mAdapters.insert (std::make_pair (UniversalId::Type_Creature,
-        new ActorRefIdAdapter<ESM::Creature> (UniversalId::Type_Creature, actorsColumns)));
+        new CreatureRefIdAdapter (creatureColumns)));
     mAdapters.insert (std::make_pair (UniversalId::Type_Door,
         new NameRefIdAdapter<ESM::Door> (UniversalId::Type_Door, nameColumns)));
     mAdapters.insert (std::make_pair (UniversalId::Type_Ingredient,
diff --git a/apps/opencs/view/doc/viewmanager.cpp b/apps/opencs/view/doc/viewmanager.cpp
index b7da23083f..4e06144501 100644
--- a/apps/opencs/view/doc/viewmanager.cpp
+++ b/apps/opencs/view/doc/viewmanager.cpp
@@ -71,6 +71,11 @@ CSVDoc::ViewManager::ViewManager (CSMDoc::DocumentManager& documentManager)
         "Amulet", 0
     };
 
+    static const char *sCreatureTypes[] =
+    {
+        "Creature", "Deadra", "Undead", "Humanoid", 0
+    };
+
     mDelegateFactories = new CSVWorld::CommandDelegateFactoryCollection;
 
     mDelegateFactories->add (CSMWorld::ColumnBase::Display_GmstVarType,
@@ -96,6 +101,9 @@ CSVDoc::ViewManager::ViewManager (CSMDoc::DocumentManager& documentManager)
 
     mDelegateFactories->add (CSMWorld::ColumnBase::Display_ClothingType,
         new CSVWorld::EnumDelegateFactory (sClothingTypes));
+
+    mDelegateFactories->add (CSMWorld::ColumnBase::Display_CreatureType,
+        new CSVWorld::EnumDelegateFactory (sCreatureTypes));
 }
 
 CSVDoc::ViewManager::~ViewManager()