complete first version...