support adding optional attributes