patterns vs language-specific solutions