try with lifetime + change fail! to panic!