commented everything properly