improve design by contract