Should be completely done except for comments/formatting. everything
should be fully functioning