ported to scala 2.10