implement split phase