finished everything including comments :)