sychronized-design by callback