changed implementation of hw_split