code unchanged, only cosmetic formatting changes