implementing split