implemented multiple implementations support