less abuse of instance vars