add prop support and change logic after requirement changed