now fully commented