modify naming and structure