add archive page and do refact