* refactor completed... I think