getting close
COMPLETE FUNCTIONALITY