check empty data before save and move all save logic into queue