Part II.
Implementation