rewrote the whole thing to use annotations instead.