Updated: Refeactored to remove excessive depends