more consistent naming and impl