make it more dynamic