set method params to "final" to get around inner class scoping issue