Port to latest component API