implemented current source