implemented 1-2 not checked yet