edited almost all