works
make this more generic
first step to makking more generic