better. need to make it more universal