use a RWClock to avoid some questions about serialization