added private/public functions