design paradigms