added prototype Implementation