updated to use the interface