only use GM when it's needed