improve naming and elegance