based on commons 4.1.1