make it more abstract