abstract dispatch common part