Shouldn't ack() call an abstract method that takes the data and return the Map of what to save? So that child class do not have to hack ack() :)