basic puzzle generation