add architecture doc