cleaned: init() and refactor