no need for member vars