Index: org/restlet/resource/Representation.java
===================================================================
--- org/restlet/resource/Representation.java	(revision 1129)
+++ org/restlet/resource/Representation.java	(working copy)
@@ -29,6 +29,7 @@
 import java.nio.channels.ReadableByteChannel;
 import java.nio.channels.WritableByteChannel;
 import java.util.Date;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -107,22 +108,16 @@
 	 */
 	public Representation(MediaType mediaType)
 	{
-		super((Logger) null);
-		this.characterSet = null;
 		this.contentAvailable = true;
 		this.contentTransient = false;
-		this.encoding = null;
 		this.size = UNKNOWN_SIZE;
-		this.expirationDate = null;
-		this.language = null;
 		this.mediaType = mediaType;
-		this.modificationDate = null;
-		this.resource = null;
-		this.tag = null;
 
 		// A representation is also a resource whose only 
 		// variant is the representation itself
-		getVariants().add(this);
+		List<Representation> myVariants = getVariants();
+		if(myVariants == null) return;
+		myVariants.add(this);
 	}
 
 	/**
Index: org/restlet/resource/Resource.java
===================================================================
--- org/restlet/resource/Resource.java	(revision 1129)
+++ org/restlet/resource/Resource.java	(working copy)
@@ -77,10 +77,7 @@
 	 */
 	public Resource(Logger logger)
 	{
-		this.allowedMethods = null;
 		this.logger = logger;
-		this.identifiers = null;
-		this.variants = null;
 	}
 
 	/**
Index: org/restlet/resource/StringTemplateRepresentation.java
===================================================================
--- org/restlet/resource/StringTemplateRepresentation.java	(revision 1129)
+++ org/restlet/resource/StringTemplateRepresentation.java	(working copy)
@@ -130,11 +130,12 @@
 	 */
 	public InputStream getStream() throws IOException
 	{
-		if (getValue() != null)
+		String value = getValue();
+		if (value != null)
 		{
 			if (getCharacterSet() != null)
 			{
-				return new ByteArrayInputStream(getValue().getBytes(
+				return new ByteArrayInputStream(value.getBytes(
 						getCharacterSet().getName()));
 			}
 			else
@@ -139,7 +140,7 @@
 			}
 			else
 			{
-				return new ByteArrayInputStream(getValue().getBytes());
+				return new ByteArrayInputStream(value.getBytes());
 			}
 		}
 		else
@@ -167,7 +168,8 @@
 	 */
 	public void write(OutputStream outputStream) throws IOException
 	{
-		if (getValue() != null)
+		String value = getValue();
+		if (value != null)
 		{
 			OutputStreamWriter osw = null;
 
@@ -180,7 +182,7 @@
 				osw = new OutputStreamWriter(outputStream);
 			}
 
-			osw.write(getValue());
+			osw.write(value);
 			osw.flush();
 		}
 	}
Index: org/restlet/util/WrapperRepresentation.java
===================================================================
--- org/restlet/util/WrapperRepresentation.java	(revision 1129)
+++ org/restlet/util/WrapperRepresentation.java	(working copy)
@@ -61,6 +61,7 @@
 	public WrapperRepresentation(Representation wrappedRepresentation)
 	{
 		this.wrappedRepresentation = wrappedRepresentation;
+		getVariants().add(this);
 	}
 
 	/**
@@ -277,6 +278,7 @@
 	 */
 	public List<Representation> getVariants()
 	{
+		if(wrappedRepresentation == null) return null;
 		return getWrappedRepresentation().getVariants();
 	}
 
