more reuse, more function calls, less pain