add factory constructor to pick the best option for you
bump version