re-organized the structure