simplified restructuring of abstraction regarding return value