Port to AngularDart (#1)