@Override
    public boolean fits(HasPosition p) {
    	/*
    	 * Check if fits inside the container (i.e parent)
    	 */
    	if (! (
    			(getLeftUpperCornerX() <= p.getLeftUpperCornerX()) &&
    			(getLeftUpperCornerX() + getWidth() >= p.getLeftUpperCornerX() + p.getWidth()) &&
    			(getLeftUpperCornerY() <= p.getLeftUpperCornerY()) &&
    			(getLeftUpperCornerY() + getHeight() >= p.getLeftUpperCornerY() + p.getHeight())))
    			return false;
    	/**
    	 * Checks overlapping with children
    	 */
    	for (HasPosition child : getChildren()) {
    		if (child == p){
    			continue;
    		}
    		if (! child.clears(p))
    			return false;
    	}
    	
    	/**
    	 * No overlapping with the children or the block itself
    	 */
    	return true;
    }