Almost finished, except for the cleanup