python design patterns implementation