support multiple column choose and small refactor

 support multiple column choose and small refactor