+ need more testing, but I haven't time now :P ...