made it more abstract