fixed return type is not right