diff --git a/release-notes/CREDITS b/release-notes/CREDITS
index 592e477..0a1bcc1 100644
--- a/release-notes/CREDITS
+++ b/release-notes/CREDITS
@@ -356,6 +356,11 @@
   * Reported [JACKSON-355] Handling of BigInteger with JsonNode not correct
    [1.5.7]
 
+Dimitry Lisay:
+  * Reported [JACKSON-370] TreeTraversingParser.skipChildren() was not
+    correctly skipping children
+   [1.5.7]
+
 Brian Oberman:
   * Requested [JACKSON-289] Ability to serialize char[] values as JSON Arrays
     with String values of length 1 (and accepting these on deserialization)
@@ -401,8 +406,4 @@
     XMLGregorianCalendar now uses same Date/Calendar serialization as other date types.
    [1.6.0]
 
-Kirill Stokoz:
-  * Reported [JACKSON-377] ThrowableDeserializer was not properly using information from
-    @JsonCreator or @JsonAnySetter
-   [1.6.1]
   
\ No newline at end of file
diff --git a/release-notes/VERSION b/release-notes/VERSION
index fa0bd76..2f2b63a 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -11,9 +11,6 @@
    * [JACKSON-372] handle missing primitive type values for @JsonCreator gracefully (with defaults)
    * [JACKSON-376] writing binary data as object field value with Smile failed
      (reported by Shay B)
-   * [JACKSON-377] ThrowableDeserializer was not properly using information from
-      @JsonCreator or @JsonAnySetter
-     (reported by Kirill S)
    * all fixes from 1.5.x up to 1.5.7
 
 ------------------------------------------------------------------------
diff --git a/src/test/org/codehaus/jackson/map/jsontype/TestDefaultForEnums.java b/src/test/org/codehaus/jackson/map/jsontype/TestDefaultForEnums.java
new file mode 100644
index 0000000..2891cd7
--- /dev/null
+++ b/src/test/org/codehaus/jackson/map/jsontype/TestDefaultForEnums.java
@@ -0,0 +1,55 @@
+package org.codehaus.jackson.map.jsontype;
+
+import org.codehaus.jackson.map.BaseMapTest;
+import org.codehaus.jackson.map.ObjectMapper;
+
+public class TestDefaultForEnums
+    extends BaseMapTest
+{
+    public enum TestEnum {
+        A, B;
+    }
+
+    static final class EnumHolder
+    {
+        public Object value; // "untyped"
+        
+        public EnumHolder() { }
+        public EnumHolder(TestEnum e) { value = e; }
+    }
+    
+    /*
+    /**********************************************************
+    /* Test methods
+    /**********************************************************
+     */
+
+    /**
+     * Serialization within Object[] is simpler, test first
+     */
+    public void testSimpleEnumsInObjectArray() throws Exception
+    {
+        ObjectMapper m = new ObjectMapper();
+        m.enableDefaultTyping();
+        
+        // Typing is needed for enums
+//        String json = m.typedWriter(Object.class).writeValueAsString(TestEnum.A);
+        String json = m.writeValueAsString(new Object[] { TestEnum.A });
+        assertEquals("[[\"org.codehaus.jackson.map.jsontype.TestDefaultForEnums$TestEnum\",\"A\"]]", json);
+
+        // and let's verify we get it back ok as well:
+        Object[] value = m.readValue(json, Object[].class);
+        assertEquals(1, value.length);
+        assertSame(TestEnum.A, value[0]);
+    }
+
+    public void testSimpleEnumsAsField() throws Exception
+    {
+        ObjectMapper m = new ObjectMapper();
+        m.enableDefaultTyping();
+        String json = m.writeValueAsString(new EnumHolder(TestEnum.B));
+        assertEquals("{\"value\":[\"org.codehaus.jackson.map.jsontype.TestDefaultForEnums$TestEnum\",\"B\"]}", json);
+        EnumHolder holder = m.readValue(json, EnumHolder.class);
+        assertSame(TestEnum.B, holder.value);
+    }
+}
