optimisations
Added checking for count <0 and when count > 0 and first == NULL