i still wonder about how the compiler gets confused about functions vs default constructors