re implement using angular