improve naming, use better code generation