updated to include parts 1-3