first pass on web code