add functions for concurrent access