base function v1.0  with annotation