bad stuff
half way implementation