implementation of CDIO