changed completely from the ground up to have different dependencies