added version implementation