private IShelf setPosition(IItem item) throws TaskFailureException {
        for (int i = 1; i < 4; i++) {
            try {
                Aisle aisle = (Aisle) manager.get("A" + i);
                List<Rack> racks = aisle.getRacks();
                for (int j = 0; j < racks.size(); j++) {
                    Rack rack = racks.get(j);
                    List<IShelf> lst = rack.getShelfs();
                    for (int k = 0; k < lst.size(); k++) {
                        IShelf proxyS = lst.get(k);
                        if (proxyS.getFreeSpace() >= item.getAmount()) {
                            int rackID = j;
                            System.out.println("RACK : - " + rack.getCode() + " = " + rackID);
                            int aisleID =i;
                            item.setPosition(new Position(proxyS.getID(), rackID, aisleID));
                            proxyS.prepare(item); //Prepare !!
                            System.out.println("Proxy ID - setPos :" + proxyS.getID());
                            return proxyS;
                        }
                    }
                }
                
            } catch (Exception ex) {
                Logger.getLogger(Storage.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        throw new TaskFailureException();
    }