use val in constructor fields where possible