everything works...need commenting