code design changes II