 
 	switch (chunkType)
 	{
-	case ChunkType.ATHR:
+	case .ATHR:
 		return Author(inputStream: inputStream, length: chunkLength)
-	case ChunkType.MPHD:
+	case .MPHD:
 		return MapHeader(inputStream: inputStream, length: chunkLength)
-	case ChunkType.EDHD:
+	case .EDHD:
 		return EditorInfoChunk(inputStream: inputStream, length: chunkLength)
-	case ChunkType.CMAP:
+	case .CMAP:
 		return ColorMap(inputStream: inputStream, length: chunkLength)
-	case ChunkType.BKDT:
+	case .BKDT:
 		guard let mapHeader = mapHeader else
 		{
 			throw ChunkError.MissingMapHeader
 		}
 		return BlockData(inputStream: inputStream, length: chunkLength, mapHeader: mapHeader)
-	case ChunkType.ANDT:
+	case .ANDT:
 		guard let mapHeader = mapHeader else
 		{
 			throw ChunkError.MissingMapHeader
 		}
 		return AnimationData(inputStream: inputStream, length: chunkLength, mapHeader: mapHeader)
-	case ChunkType.BGFX:
+	case .BGFX:
 		return BlockGraphics(inputStream: inputStream, length: chunkLength)
+	case .BODY, "LYR[0-7]":
+		guard let mapHeader = mapHeader else
+		{
+			throw ChunkError.MissingMapHeader
+		}
+		return Layer(inputStream: inputStream,
+			length: chunkLength,
+			mapHeader: mapHeader,
+			chunkType: chunkType)
 	default:
 		print("Unknown chunk tag: \(chunkType)")
 		var buffer = [UInt8](count: chunkLength, repeatedValue: 0)

	case LYR5 = "LYR5"
	case LYR6 = "LYR6"
	case LYR7 = "LYR7"
}

enum ChunkError : ErrorType

	case BKDT = "BKDT"
	case ANDT = "ANDT"
	case BGFX = "BGFX"

	case BODY = "BODY"
	case LYR1 = "LYR1"
	case LYR2 = "LYR2"
	case LYR3 = "LYR3"
