diff --git a/js/ContentObject.js b/js/ContentObject.js
new file mode 100644
index 0000000..d05f7ba
--- /dev/null
+++ b/js/ContentObject.js
@@ -0,0 +1,58 @@
+/*
+ * @author: ucla-cs
+ * This class represents ContentObject Objects
+ */
+var ContentObject = function ContentObject(_Name,_SignedInfo,_Content,_Signature){
+	
+	
+	if (typeof _Name === 'string'){
+		var n = new Name(_Name);
+	}
+	else{
+		//TODO Check the class of _Name
+		this.Name = _Name;
+	}
+	this.SignedInfo = _SignedInfo;
+	this.Content=_Content;
+	this.Signature = _Signature;
+
+};
+
+
+ContentObject.prototype.decode = function(/*XMLDecoder*/ decoder) {
+
+		decoder.readStartElement(this.getElementLabel());
+
+		this.Signature = new Signature();
+		this.Signature.decode(decoder);
+
+		this.Name = new ContentName();
+		this.Name.decode(decoder);
+
+		this.SignedInfo = new SignedInfo();
+		this.SignedInfo.decode(decoder);
+
+		this.Content = decoder.readBinaryElement(CCNProtocolDTags.Content);
+
+		decoder.readEndElement();
+
+};
+
+ContentObject.prototype.encode = function(/*XMLEncoder*/ encoder)  {
+
+	//TODO verify Name, SignedInfo and Signature is present
+
+
+	encoder.writeStartElement(this.getElementLabel());
+
+	if(null!=this.Signature) this.Signature.encode(encoder);
+	if(null!=this.Name) this.Name.encode(encoder);
+	if(null!=this.SignedInfo) this.SignedInfo.encode(encoder);
+
+	encoder.writeElement(CCNProtocolDTags.Content, this.Content);
+
+	encoder.writeEndElement();
+
+};
+
+ContentObject.prototype.getElementLabel= function(){return CCNProtocolDTags.ContentObject;};
