porting off of angular (part 1)