optimize methods further