add optional password feature