replace DoOpen
{
	local tempformat, light_check, skip_ahead

	if not CheckReach(object):  return false

	if object is not openable
	{
		VMessage(&DoOpen, 1)             ! "You can't open that."
		return
	}
	elseif object is open
		VMessage(&DoOpen, 2)             ! "It's already open."
	elseif object is locked
		VMessage(&DoOpen, 3)             ! "It's locked."
	else
	{
		object is open
		object is moved
		local i
		if not Contains(object,player) and object is not transparent
		{
			for i in object
			{
				if i is not hidden
					break
			}
		}
		if i
		{
			if not light_source
				light_check = FindLight(location)  ! in case the light source
                                               ! has been revealed
		}
		if not object.after
		{
			if not i or object is quiet
			{
				VMessage(&DoOpen, 4)     ! "Opened."
			}
			else
			{
				local x
				list_count = 0
				for x in object
				{
					if x is not hidden
						list_count++
				}
				parser_data[PARSER_STATUS] &= ~PRONOUNS_SET
				RLibMessage(&DoOpen,1) ! "opening the <blank> reveals"
				ListObjects(object)
				object = -1    ! so the last pronoun assigned stays
				skip_ahead = true
			}
		}
		else
			skip_ahead = true ! object.after has to list the contents
			                  ! if it exists

		if i and object is not quiet and
			not skip_ahead
		{
			print ""
			parser_data[PARSER_STATUS] &= ~PRONOUNS_SET
			tempformat = FORMAT
			FORMAT = FORMAT | NOINDENT_F
			list_nest = 0
			WhatsIn(object)
			FORMAT = tempformat
			object = -1    ! so the last pronoun assigned stays
		}
	}
	if light_check
	{
		Perform(&DoLookAround)
	}
	return true
}