updated to fit needs