addregation refactor