Functional Optimization: Keep it Simple