first pass. removed underscore. still depends on jQuery though