have full example code working and fairly organized