factor together structure generation