cleanup
simplify
cleanup
cleanup
private
remove need to list all impls