convert to impls, add some terse docs