The adapter design pattern