finish sa_obj refactor