Gaining weight or losing weight?
What problems do you have? Are you having latency issues that could be resolved by reducing external dependencies? Are you having difficulty synchronizing multiple components that each implement the same behavior?
It's better, in my view, to know how to tell what challenge your code is actually facing. Sometimes this will lead to more aggressive decoupling and sometimes it will lead to externalization of shared functionality. Deciding these things ahead of time is a recipe for fanaticism.