allow custom length specified by user