Could we make some of these inherit from an abstract attachment factory?