add both final and normal methods