further refinements
still not functional