Some refactor! :)