actually implement it the right way