refactor, cleanup, added missing reset methods