[POC] Introducing promotion component

Just a POC to see the amount of work needed by @pjedrzejewski's "let's split everything into component" RFC.