em needs optimization.