needs to be more flexible