return more eagerly and rename some methods.