change return values, return 0 on success