firmware refactor