refactored & circle