added trailing return type