code part done by djo