a more complete prepare