Hi, Friend:
tiger001 has provided most of the information. I would like to add one based on my experience.
If you hire a lawyer outside of the company for GC, you need to let your boss know that during GC process, your boss need to provide company's financial information to INS through the lawyer. Some private companies may not be comfortable about it.
Good luck.