design for testing