improve HABTM