only attributeChanged callback has arguments