reduce #114, better but not perfect