 			writer.writeElement 'packagedescription', _package.packageinformation.packagedescription[0]._ ? _package.packageinformation.packagedescription[0]
 			writer.writeElement 'isapplication', String(_package.packageinformation.isapplication ? 0)
 			do writer.endElement
+			
+			# write <authorinformation>
 			if _package.authorinformation?
 				writer.startElement 'authorinformation'
 				writer.writeElement 'author', _package.authorinformation.author[0] if _package.authorinformation.author[0]?

											fileCallback "version number does not match file (#{currentVersion.versionnumber.replace ' ', '_'} != #{path.basename versionFile, '.tar'})"
											return
										currentVersion.fromversions = (instruction.$.fromversion for instruction in versionPackageXml.package.instructions when instruction.$.fromversion?)
										currentVersion.requiredpackages = versionPackageXml.package.requiredpackages[0]
										currentVersion.timestamp = versionFileStat.mtime
										currentPackage.versions[versionNumber] = currentVersion
										# TODO: Excludes and optionals
										logger.log "debug", "Finished parsing #{versionFile}"
										versionsCallback null
							, (err) ->

	comparison = comparison.replace /[ ]/g, ''
	
	comparison = comparison.replace /\$v(==|<=|>=|<|>)([0-9]+\.[0-9]+\.[0-9]+.-?[0-9]+.[0-9]+)/g, (comparison, operator, v2) ->
		# build comparison function
		return """
		((function($v) {
			$v = $v.replace(/[ _]/g, '.').replace(/a(?:lpha)/i, -3).replace(/b(?:eta)?/i, -2).replace(/d(?:ev)?/i, -4).replace(/rc/i, -1).replace(/pl/i, 1).split(/\\./)
