refactory all
reconstructure the app