very complicated implement problem, very gooooood