use pre conditions instead of assertions, its much nicer looking