implement BDEF4