FIX: refactor