best fit need more work. logic is almost the same