@Override
    public void addComponent(Component component, LayoutParameter... parameters) {
        if(parameters.length == 0) {
            parameters = new LayoutParameter[] { CENTER };
        }
        else if(parameters.length > 1) {
            throw new IllegalArgumentException("Calling BorderLayout.addComponent with more than one "
                    + "layout parameter");
        }
        else if(!BORDER_LAYOUT_POSITIONS.contains(parameters[0])) {
            throw new IllegalArgumentException("Calling BorderLayout.addComponent layout parameter " +
                    parameters[0] + " is not allowed");
        }
        else if(component == null) {
            throw new IllegalArgumentException("Calling BorderLayout.addComponent component parameter " +
                    "set to null is not allowed");
        }
        
        //Make sure we don't add the same component twice
        removeComponent(component);
        synchronized(components) {
            components.put(parameters[0], component);        
        }
    }