half-way rewrote VB