upgraded version, updated formatting