re-implementing composite support