changes to make more generic