fix and improve