better naming, some documentation