Add better checking and reset methods