added consts here & there to avoid copying.. perfect forwarding would be useful, but only if it doesn't make syntax ugly (and compile errors too confusing)'