a few gaps left, but getting there