implement split ourselves