will have to work on this more later ...