added pattern get type and surface