improve design + fix code follow the design