Why did you moved read method to private block? I know we use it only in initializer but I don't see any reason for not making this method public.