refactored to use angular