Splitting problem into multiple parts (small, large inputs) plus other enhancements