takes optional filename, or asks you for one if not given