updated version
refactor