accurate return type