abstraction to functions