Updated source, with improved semantic markup