add custom read & print