It would be good to add some useful javadocs, because i can't tell the use of this class before i look at the rest of the changes