generate general structures