added canonical callbacks