updated to work with interface