methods and abstract