Waterworks is perfect! Online scheduling is easy, and the teachers are wonderful. My daughter is nearly 4 and takes lessons with David & Ashley. They (and all of the teachers) take time after each lesson to give the parents a progress report, and they are so good with the kids.
We switch between teachers simply because our schedule changes week-to-week, and they go the extra mile to fill each other in so that the lessons are consistent and build upon one another. It is as though she has just one teacher.
Semi-private lessons are the way to go - much less expensive than private, and it's only 2 kids. I find it's good to have a classmate, regardless of whether my daughter is the more- or less-experienced one. It's more fun together, and there is something to learn from the other student, even if s/he is less-experienced. Also, at least half the time there is not a second student, so it's a private lesson for a much lower cost.
They have a little pool the kids can play in for 15 minutes before or after the lesson. Samantha is one of the lifeguards, and she really cares to learn the kids' names and interact with them.
I highly recommend Waterworks.