improve naming and structure