public static void scheduleRecurringEvent( String method, Object target, long delay, Object... parameters )
    {
        Event event = new Event();

        try
        {
            if ( parameters != null )
            {
                Class< ? >[] paramClasses = new Class< ? >[ parameters.length ];
                for ( int i = 0; i < paramClasses.length; i++ )
                {
                    paramClasses[ i ] = parameters[ i ].getClass();
                }

                event.action = target.getClass().getMethod( method, paramClasses );
            }
            else
            {
                event.action = target.getClass().getMethod( method );
            }

        }
        catch ( SecurityException | NoSuchMethodException e )
        {
            Lumberjack.throwable( "Scheduler", e );
        }

        event.target = target;
        event.delay = delay;
        event.executionTime = TimeHelper.toTicks( Sys.getTime() ) + delay;
        event.parameters = parameters;

        recurringEvents.add( event );
    }