rewrite code
fix visual