fixed precision; added back comments and made methods virtual