Add all five approaches and tests