make it work again + improvements