design details and implementation detail updated