cleanup plus make foreign key support work correctly
updated to have strategy explicitly exposed