restructured slightly for web publishing