customized for angular version