use more appropriate types for parameters and convert them later