levels of abstractions (functions)

what the function does should be apparent from the function, variable and struct names. low level functionality should be separated out into functions so that when someone is reading a high level function, they have a choice of diving into details (i got that from clean code. there can be exceptions to this but generally i like this approach).