implement ReadFrom