public void writeTypes(Vector vector) {
		// A big ol' case statement in a for loop -- what's polymorphism mean, again?
		// I really wish I could extend the base classes!

		Enumeration enm = vector.elements();
		Object nextObject;
		while (enm.hasMoreElements()) {
			nextObject = enm.nextElement();
			if (null == nextObject)
				continue;
			// if the array at i is a type of array write a [
			// This is used for nested arguments
			if (nextObject.getClass().isArray()) {
				stream.write('[');
				// fill the [] with the SuperCollider types corresponding to the object
				// (e.g., Object of type String needs -s).
				writeTypesArray((Object[]) nextObject);
				// close the array
				stream.write(']');
				continue;
			}
			// Create a way to deal with Boolean type objects
			if (Boolean.TRUE.equals(nextObject)) {
				stream.write('T');
				continue;
			}
			if (Boolean.FALSE.equals(nextObject)) {
				stream.write('F');
				continue;
			}
			// go through the array and write the superCollider types as shown in the 
			// above method. the Classes derived here are used as the arg to the above method
			writeType(nextObject.getClass());
		}
		// align the stream with padded bytes
		appendNullCharToAlignStream();
	}