Separated address checkout process.

    Code is a little bit messy. It must be refactored.
Merge branch 'new/addrcheckout'