Initial base of refactor