init profile once and improve callbacks