adapted for 3