Separated into modules; added assert extensions