function result must not be a procedural type?