something works, but it should be much better and stable