use return for nicer source/generated code