some additions from francescofavero