refactor and simplify
delete areas
use reference