black: change Close() to not panic when OnClose is nil
black: add Record