use default type if not specified