decouple implementation codes with steps codes