better use of final vars