progress thus far, functionality almost done