rework Entity#add to better express actual code paths