improve implementation