completed Version 1