complete first version.